[英]Foreign Key constraint one to many tables while on delete ,on update cascade rule
我正在開發一個存在數據庫問題的 Web 應用程序。
我有三張表:如下
表格1:
CREATE TABLE mydb.emp( eID INT NOT NULL, eName VARCHAR(45) NULL, PRIMARY KEY(eID) );
表 2:
CREATE TABLE mydb.empLocation( eLocateID INT NOT NULL, eArea VARCHAR(45) NULL, eCity VARCHAR(45) NULL, eZipcode VARCHAR(45) NULL, eID INT NULL, PRIMARY KEY(eLocateID), CONSTRAINT eID FOREIGN KEY (eID) REFERENCES mydb.emp(eID) ON DELETE CASCADE ON UPDATE CASCADE );
表3:
CREATE TABLE mydb.empLogin( eLoginID INT NOT NULL, eTimeIn TIMESTAMP NULL, eTimeOut TIMESTAMP NULL, eID INT NULL, PRIMARY KEY(eLoginID), CONSTRAINT eID FOREIGN KEY (eID) REFERENCES mydb.emp(eID) ON DELETE CASCADE ON UPDATE CASCADE );
當我創建表 3 時,有一個問題我無法插入表,因為在刪除和更新級聯時。
我想要級聯,因為當我刪除 emp 表中的一行時,其他表中的數據也應該被刪除。
請給我這個問題的任何解決方案或此用例的任何替代解決方案,提前致謝。
請嘗試以下操作:
表格1
CREATE TABLE emp(
eID INT NOT NULL,
eName VARCHAR(45) NULL,
PRIMARY KEY(eID)
);
表 2
CREATE TABLE empLocation(
eLocateID INT NOT NULL,
eArea VARCHAR(45) NULL,
eCity VARCHAR(45) NULL,
eZipcode VARCHAR(45) NULL,
eID INT NULL,
PRIMARY KEY(eLocateID),
CONSTRAINT eID
FOREIGN KEY (eID)
REFERENCES emp(eID)
ON DELETE CASCADE
ON UPDATE CASCADE
);
表3
CREATE TABLE empLogin(
eLoginID INT NOT NULL,
eTimeIn TIMESTAMP NULL,
eTimeOut TIMESTAMP NULL,
eID INT NULL,
PRIMARY KEY(eLoginID)
);
ALTER TABLE empLogin ADD FOREIGN KEY (eID) REFERENCES emp(eID)
ON DELETE CASCADE
ON UPDATE CASCADE;
然后,
INSERT INTO emp VALUES(1, 'John'), (2, 'Paul');
INSERT INTO empLogin VALUES
(1, '2017-01-27 09:00:00', '2017-01-27 18:00:00', 1),
(2, '2017-01-27 09:30:00', '2017-01-27 18:30:00', 2);
這種方式似乎工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.