SQL / OracleDB: Como definir o mesmo valor para todos os campos em uma coluna?

1

É possível definir um valor para todos os campos em uma coluna, por exemplo:

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

Eu quero ser capaz de alterar todas as entradas da coluna Host, que são todas iguais em um lugar. Este lugar pode ser uma GUI como o Ocracle SQL Developer ou Queries, eu não me importo, desde que eu tenha que mudar apenas um campo de dados que mude todos os campos do Host.

    
por nottinhill 16.06.2011 / 15:51

1 resposta

3

Parece que você poderia fazer algo como

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

para atualizar todas as linhas da tabela. Armazenar os mesmos dados em várias linhas de uma tabela, entretanto, viola o princípio básico de normalização. Você quase sempre deseja modificar o design do esquema para que haja uma tabela separada para o HOST e uma chave estrangeira de sua tabela para a tabela do host. Algo como

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)
);

Se você fez isso, só precisa atualizar uma linha na tabela HOST para atualizar o nome do host de todas as linhas da tabela.

    
por 16.06.2011 / 21:05