我正在關注此數據庫類的book。該數據庫有6個表格。從他們中的6位我將發佈兩個表。如何在MySQL數據庫中存在關係約束時插入數據
/*EMPLOYEE Table */
CREATE TABLE EMPLOYEE(
Fname VARCHAR(15) NOT NULL,
Minit CHAR,
Lname VARCHAR(15) NOT NULL,
Ssn CHAR(9) NOT NULL,
Bdate DATE,
Address VARCHAR(30),
Sex CHAR,
Salary DECIMAL(10,2),
Super_ssn CHAR(9),
Dno INT NOT NULL,
PRIMARY KEY (Ssn),
FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)
FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber));
員工表具有遞歸關係來演示「員工是另一員工的主管」。它還引用DEPARTMENT表來顯示員工在部門工作。以下是DEPARTMENT表的模式。
CREATE TABLE DEPARTMENT(
Dname VARCHAR(15) NOT NULL,
Dnumber INT NOT NULL,
Mgr_ssn CHAR(9) NOT NULL,
Mgr_start_date DATE,
PRIMARY KEY (Dnumber),
UNIQUE (Dname),
FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn)
);
DEPARTMENT表引用員工表來顯示員工管理部門。 插入時的數據,如
insert into EMPLOYEE values
('John','B','Smith','123456789','1965-01-09','731 Fondren, Houston, TX',
'M',30000,'333445555',5);
我們將無法執行上述查詢,但由於是參照完整性FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)
。同樣如果我嘗試下面的查詢
insert into department values ('Research',5,'333445555','1988-05-22');
上面的查詢不會執行,因爲員工表中沒有數據。我的問題是我們應該先插入數據,然後改變表格並強制引用完整性約束。或者有辦法解決。您的建議/意見將不勝感激。謝謝。
它不需要像放下約束一樣激烈。只要允許該列爲空。 – e4c5