Database

SQL / OracleDB:如何為列中的所有欄位設置相同的值?

  • January 25, 2015

是否可以為列中的所有欄位設置值,例如:

ID Host    URI
1  //cyrus /images    
2  //cyrus /videos
3  //cyrus /text
4  //cyrus /misc
5  //cyrus /backup

我希望能夠在一個地方更改所有主機列條目——它們都是相似的。這個地方可以是像 Ocracle SQL Developer 或 Queries 這樣的 GUI,我不在乎,只要我只需要更改一個更改所有主機欄位的數據欄位即可。

聽起來你可以做類似的事情

UPDATE your_table_name
  SET host = '//new_host'
WHERE host = '//cyrus'

更新表中的所有行。然而,將相同的數據儲存在表的多行中違反了規範化的基本原則。您幾乎總是希望修改架構設計,以便為 HOST 提供一個單獨的表以及從您的表到主機表的外鍵。就像是

CREATE TABLE host (
 host_id   NUMBER PRIMARY KEY,
 host_name VARCHAR2(50)
);

CREATE TABLE your_table_name (
 your_id   NUMBER PRIMARY KEY,
 host_id   NUMBER REFERENCES host( host_id ),
 uri       VARCHAR2(100)
);

如果你這樣做了,你只需要更新表中的一行HOST來更新表中所有行的主機名。

引用自:https://serverfault.com/questions/281075