私は2つのテーブルを持っています:
Empleados(**numEmpl**, nombre, apellido, sexo, telefono, salario, numDept)
Departamentos(**numDept**, nombreDept, numDirect)
部門:
- numEmpl は主キーです
- numDept は、Departamentos(numDept) への外部キー参照です。部門:
- numDept は主キーです
- numDirect は Empleados (numEmpl) への外部キー参照です。
したがって、循環参照があります。
まず、テーブルを作成しました。
CREATE TABLE EMPLEADOS(numEmpl primary key, nombre,
apellido, sexo, telefono, salario, numDept)
CREATE TABLE DEPARTAMENTOS(numDept primary key, nombreDept, numDirect)
(i didn't write here each of type is each colum)
次に、それらの間の参照を作成します。
ALTER TABLE DEPARTAMENTOS
ADD CONSTRAINT FK_DEPT_EMP FOREIGN KEY (numDirect)
REFERENCES EMPLEADOS(numEmpl)
ALTER TABLE EMPLEADOS
ADD CONSTRAINT FK_EMP_DEPT FOREIGN KEY (numDept)
REFERENCES DEPARTAMENTOS(numDept).
うまくいったので、いくつかのデータを挿入しようとしました:
INSERT INTO Empleados(numEmpl, nombre, apellidos, sexo, telefono, salario, numDept)
VALUES (1, 'Pepito', 'Pérez', 'H', '111111111', 20000, 1);
INSERT INTO Departamentos(numDept, nombreDept, numDirect)
VALUES (1, 'Direccion', 1);
しかし、循環参照にデータを導入できないというエラーが表示されます。循環参照を無効にしてデータを挿入し、再度有効にしようとしましたが、うまくいきましたが、そうではないと言われました正しい方法で、そのようにデータを挿入するためにテーブルを作成している間に何か特別なことをしなければなりませんが、それはうまくいきますが、その方法がわかりません。ちなみに、私はオラクルのSQL開発者を使用しています。
編集:回答ありがとうございますが、うまくいきませんでした。まず第一に、私はそのテーブルしか持つことができず、挿入を行うときは、パラメータをnullにしてから更新せずに、そのように機能しなければなりません. だから私がしなければならない唯一の方法は、サークル参照を許可することですが、誰かがここで言った方法でそれをやろうとすると、ロールバックについて何かがわかります。誰かが助けてくれますか?