Назад | Перейти на главную страницу

SQL / OracleDB: Как установить одинаковое значение для всех полей в столбце?

Можно ли установить значение для всех полей в столбце, например:

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

Я хочу иметь возможность изменить все записи столбца Host, которые все одинаковы, находятся в один место. Это место может быть графическим интерфейсом, таким как Ocracle SQL Developer или Queries, мне все равно, пока мне нужно изменить только одно поле данных, которое изменяет все поля хоста.

Похоже, вы могли бы сделать что-то вроде

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 table, чтобы обновить имя хоста для всех строк в вашей таблице.