我在mysql中有兩個表。表A具有主密鑰證書ID和數千證書。 它也有一個關鍵的UserID。表B具有主鍵UserID。 表B具有不在表A中的用戶ID。我的意思是我們有表A中沒有出現在表B中的用戶ID。但是表B中的所有用戶ID都可以在表A中找到。 參照完整性是否可行? 如何在這裏執行參照完整性?引用完整性SQL
引用完整性SQL
回答
這只是表示表A的UserID
取決於表B的UserID
。但tableB不依賴於tableA。模式看起來像這樣,
CREATE TABLEB
(
UserID INT,
......,
CONSTRAINT tb_pk PRIMARY KEY (USERID)
);
CREATE TABLEA
(
CertID INT,
UserID INT,
.....,
CONSTRAINT tb_pk1 PRIMARY KEY (CertID),
CONSTRAINT tb_fk FOREIGN KEY (UserID) REFERENCES tableB(UserID)
);
您可以在tableB上插入任何記錄。但TableA上,如果你想插入記錄,確保用戶ID的值必須首先存在tableB的的UserID
或其他聰明人,你會得到一個錯誤
ERROR 1452 (23000): cannot add or update a child row....
我明白你的意思了。但從我對問題的看法來看,我可以執行RI嗎? – Sithelo
你不能強制referential integrity
這裏,因爲TableA具有UserID列中不存在於TableB的UserID列中的項目,因此即使沒有任何參照完整性約束,您也可以使用join
從兩個表中獲取值。
在高層次上,MySQL中的引用完整性由您正在使用的存儲引擎進行管理。
早期的存儲引擎根本不支持引用完整性,但像InnoDB這樣的新存儲引擎(我相信新安裝的默認設置)確實支持它。
檢查您的存儲引擎,看它是否支持引用完整性。 InnoDB會是一個好消息。 (一旦/如果)您正在使用支持引用完整性的引擎,則需要定義外鍵約束來定義關係。
有用底漆可以在這裏找到: -
http://blogs.sakienvirotech.com/index.php/random/2011/09/19/mysql-101-referential-integrity
謝謝保羅。我有InnoDB引擎。我只想知道的是:是否有可能在不刪除表B中不匹配的值的情況下對所討論的表執行RI? – Sithelo
不,完整的參照完整性是你沒有孤兒孩子的記錄沒有父母。你有沒有考慮將子記錄存檔? –
參照完整性不僅僅意味着一個基本的外鍵等等。它還會問這個問題,如果在表B中刪除或更改了具有某個UserID的行,會發生什麼情況。這是一個業務問題,您可以級聯這些更改。級聯刪除意味着如果您刪除用戶,您想要將該用戶的鏈接刪除到證書,級聯更新意味着更改表B中的用戶ID也會更改表A中的相應值。設置爲NULL意味着如果刪除用戶,您希望保留其鏈接記錄,但將表A中的用戶標識設置爲NULL,並且什麼都不做,意味着您將不允許刪除或更新表B中的行,但表A中有對它的引用。
參照完整性是一個總括術語,並不意味着在任何情況下都是一樣的。它只具有與特定系統或實現相關的完整性。
- 1. RavenDB引用完整性
- 2. SQL表完整性
- 3. MySQL的禁用引用完整性
- 4. SQL Server的引用完整性添加行父表
- 5. 同義詞和引用完整性
- 6. 通過引用完整性連接表?
- 7. BinaryFormatter中的引用完整性
- 8. rails中的引用完整性
- 9. 的LINQ to SQL deleteAllOnSubmit參照完整性
- 10. #SQL服務器數據完整性表?
- 11. SQL錯誤:ORA-02291:完整性約束
- 12. 完整的磁盤和SQL Server性能
- 13. SQL完整性約束VarChar比較
- 14. (Oracle)SQL DDL - 完整性約束
- 15. SQL的鍊金完整性錯誤
- 16. 如何在netbeans sql中使用外鍵約束來引用參考完整性?
- 17. SQL Server - 保持不帶CASCADE和INSTEAD OF觸發器的引用完整性
- 18. 保持在SQL Server中的循環引用數據完整性2012
- 19. 通用校驗引用完整性ASP。 NET MVC
- 20. 使用4表循環引用的表完整性
- 21. EF4引用完整性異常使用代碼優先?
- 22. 用NHibernate插入時保持引用完整性
- 23. 組完整的SQL
- 24. 完整性和真實性
- 25. 使用SQL修復損壞的完整性層次樹使用
- 26. 參照完整性
- 27. 完整性約束
- 28. 參照完整性
- 29. 完整性審計
- 30. 實體完整性
在連接上閱讀 –
@ meisam-mulla我瞭解連接。我的老闆希望我實施RI。 – Sithelo
然後使用外鍵。 –