2012-11-17 26 views
1

我有一個MySql(InnoDb)表,它表示對多種類型的對象之一作出的評論。因爲我使用的是Concrete Table Inheritance,所以下面顯示的每種類型的對象(商店,類別,商品)都有不同的外鍵。對於每條記錄,必須設置一個外鍵,而另外兩個必須爲空。我如何在MySql中指定這個約束?MySQL約束 - 集合中的某一列必須爲非null?

CREATE TABLE `tbl_comment` (
    `comment_id` bigint(20) NOT NULL AUTO_INCREMENT, /* primary key */ 
    `_user_id` bigint(20) NOT NULL, /* foreign key to user table - always set (NOT NULL) */ 

    `store_id` int(11) DEFAULT NULL, /* foreign key to store table */ 
    `category_id` bigint(20) DEFAULT NULL, /* foreign key to category table */ 
    `item_id` bigint(20) DEFAULT NULL, /* foreign key to item table */ 
... 
+0

隨着觸發用於之一。 –

回答

0

嘗試添加以下觸發

CREATE TRIGGER on_insert AFTER INSERT ON `tbl_comment` 
FOR EACH ROW 
BEGIN 
    SET NEW.category = NULL, NEW.item = NULL; 
END; 
+0

這只是將值設置爲NULL?與將外鍵聲明爲DEFAULT NULL不同,它有什麼不同? –