簡體   English   中英

在非主鍵或唯一鍵上創建外鍵約束

[英]Creating a foreign key contstraint on non primary or unique key

如何對非主鍵使用外鍵約束?

例如我有兩個表accounttransactions 我要檢查的acnametransactions是一個acnameaccount

table account (acno, acname, bal, type)
table transactions (tid, acno, acname, bal, credit/debit, datetime)

這里的transactions.acname應該等於account.acname

請參閱此圖以獲取幫助:

在此處輸入圖片說明

修復您的數據模型!

也就是說,不要將acnoacname都存儲在兩個表中。 相反,將acno存儲在accounts

然后當你想要名字時,使用join

select t.*, a.acname
from transactions t join
     accounts a
     on t.acno = a.acno

基本規則是您希望將外鍵約束鏈接到引用表的主鍵(盡管大多數數據庫允許它們具有唯一鍵)。 而且,您不希望跨表重復數據。

盡管 MySQL 允許您定義對非主鍵的外鍵引用,但沒有理由這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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