sql >> Base de Datos >  >> RDS >> Oracle

Clave foránea de Oracle

Creo que quieres lo siguiente. Tenga en cuenta que probablemente debería estar usando VARCHAR2 en lugar de VARCHAR en Oráculo. Funcionan igual en este momento, pero existe la posibilidad de que Oracle cambie la funcionalidad de VARCHAR para alinearlo con el estándar ANSI (en el que las cadenas vacías '' se distinguen de NULL s ... pero estoy divagando):

CREATE TABLE client
( id NUMBER(10) NOT NULL PRIMARY KEY
, name VARCHAR2(30) NOT NULL
, surname VARCHAR2(30) NOT NULL
, phone NUMBER(11) NOT NULL
, email VARCHAR2(70) );

CREATE TABLE boss
( b_surname VARCHAR2(30) NOT NULL PRIMARY KEY
, b_Name VARCHAR2(30) NOT NULL );

Y luego:

ALTER TABLE client ADD CONSTRAINT boss_client_fk FOREIGN KEY (surname) REFERENCES boss (b_surname);

Es un poco extraño que la columna se llame surname en CLIENT y b_surname en BOSS .

Si quieres b_surname en BOSS para referirse a surname en CLIENT -- entonces necesitas hacer CLIENT.surname una clave primaria, o al menos única.