簡體   English   中英

外鍵mysql

[英]foreign key mysql

我有以下表格:

PROFILE table {
user_id INT, 
apitype enum('facebook' , 'main')
}

USER table {
id INT
}

PROFILE.user_id是指向USER表中ID的外鍵,但PROFILE.apitype = 'main'

所以基本上PROFILE.user_id並不是指一個ID在user表中,如果PROFILE.apitype != 'main'

如何在MYSQL中完成此操作?

您可能可以使用在插入/更新之前觸發的觸發器 ,並檢查apitype的值。 甚至還有一些方法可以在MySQL觸發器中引發錯誤,例如,檢查this

好吧,因為這是邏輯,所以應該在應用程序而不是數據庫中處理。

您可以在配置表中將user_id添加為可為空,使連接成為可選,並根據您使用的存儲引擎嘗試觸發器(盡管在mysql中對其了解不多)。

我認為您無法在Mysql中以簡單的方式完成此操作。

例如在Postgres中,您有一個檢查約束,您可以在其中檢查apitype是否為main,然后user_id必須為null。

在Mysql中,您只能使用觸發器執行此操作,但並非如此簡單。 我認為對您來說最簡單,最可靠的方法就是在您的應用程序中進行檢查。 但是您仍然可以在user_id上設置外鍵,即使有時它為null

暫無
暫無

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

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