Here is an explanation using SQLFiddle
下面是代碼,只是爲了完整性...
設置:
CREATE TABLE ParentTable (
ID int NOT NULL PRIMARY KEY,
Name varchar(50)
)
CREATE TABLE ChildTable (
ID int NOT NULL PRIMARY KEY,
ParentID int NOT NULL FOREIGN KEY REFERENCES ParentTable(ID) ON DELETE CASCADE,
Description varchar(50)
)
INSERT ParentTable VALUES (1, 'Bob');
INSERT ParentTable VALUES (2, 'Tim');
INSERT ChildTable VALUES (1, 1, 'Bob''s Description');
INSERT ChildTable VALUES (2, 2, 'Tim''s Description');
例子:
SELECT * FROM ParentTable PT INNER JOIN ChildTable CT on CT.ParentID = PT.ID;
-- This will fail
INSERT ChildTable VALUES (3, 3, 'Judy''s Description');
-- It will succeed after inserting the Parent Record
INSERT ParentTable VALUES (3, 'Judy');
INSERT ChildTable VALUES (3, 3, 'Judy''s Description');
SELECT * FROM ParentTable PT INNER JOIN ChildTable CT on CT.ParentID = PT.ID;
-- Deleting the parent record will "cascade" the delete to the child table
DELETE ParentTable WHERE ID = 1;
SELECT * FROM ParentTable PT INNER JOIN ChildTable CT on CT.ParentID = PT.ID;
外鍵約束將強制您所需的參照完整性。級聯刪除將允許用戶刪除父級,並自動刪除任何引用子級。如果沒有級聯刪除,如果父級被任何子級引用,任何刪除父級的嘗試都會失敗。
您插入到父表中,讓mysql爲其生成一個ID(例如auto_increment),用'last_insert_id()'檢索該ID,然後使用該ID插入到子表中。 –
對不起,我使用了錯誤的標籤。這是一個mssql服務器。我還能使用它嗎? – james
您需要將userAccess中的id聲明爲具有對userInformation的參照完整性的外鍵。這將確保只有有效的userInformation id將被允許插入到userAccess中 – Tarik