簡體   English   中英

外鍵約束一對多表,同時刪除,更新級聯規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM