Restrição FOREIGN KEY SQL
- Página anterior Chave primária do SQL
- Próxima página Verificação do SQL
Restrição FOREIGN KEY SQL
Uma FOREIGN KEY em uma tabela aponta para a PRIMARY KEY em outra tabela.
Vamos explicar o conceito de FOREIGN KEY com um exemplo. Veja as duas tabelas a seguir:
Tabela "Persons":
Id_P | NomeUltimo | NomePrimeiro | Endereço | Cidade |
---|---|---|---|---|
1 | Adams | John | Rua Oxford | Londres |
2 | Bush | George | Avenida Fifth | Nova York |
3 | Carter | Thomas | Rua Chang'an | Pequim |
Tabela "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
Atenção, a coluna "Id_P" na tabela "Orders" aponta para a coluna "Id_P" na tabela "Persons".
A coluna "Id_P" na tabela "Persons" é a PRIMARY KEY na tabela "Persons".
A coluna "Id_P" na tabela "Orders" é uma FOREIGN KEY na tabela "Orders".
A restrição FOREIGN KEY é usada para prevenir ações que destruam as conexões entre as tabelas.
A restrição FOREIGN KEY também pode evitar a inserção de dados ilegais na coluna de chave estrangeira, pois deve ser um dos valores da tabela a que aponta.
Restrição FOREIGN KEY no CREATE TABLE
Abaixo está o SQL criado durante a criação da tabela "Orders" para criar FOREIGN KEY na coluna "Id_P":
MySQL:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) )
SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, Id_P int FOREIGN KEY REFERENCES Persons(Id_P) )
Se precisar de nomear a restrição FOREIGN KEY e definir restrições FOREIGN KEY para várias colunas, use a seguinte sintaxe SQL:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) )
Restrição FOREIGN KEY do SQL em ALTER TABLE
Se precisar criar uma restrição FOREIGN KEY para a coluna "Id_P" enquanto a tabela "Orders" já existe, use o seguinte SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Se precisar de nomear a restrição FOREIGN KEY e definir restrições FOREIGN KEY para várias colunas, use a seguinte sintaxe SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Revogar restrição FOREIGN KEY
Se precisar de revogar a restrição FOREIGN KEY, use o seguinte SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
- Página anterior Chave primária do SQL
- Próxima página Verificação do SQL