2016-07-29 40 views
-1

我有一個欄目表防止缺失父母的如果存在子記錄

CREATE TABLE `tbl_categories` (
    `id` int(11) NOT NULL, 
    `name` varchar(100) NOT NULL DEFAULT '0', 
    `parent_id` int(11) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

,這是它如何顯示與子類別的類別,並且運行後

enter image description here

我需要防止的缺失父記錄是否有一個或幾個子記錄。我該怎麼做?。

+1

爲什麼不是外鍵? – berty

+0

@berty,我在哪裏添加外鍵? –

+0

查看@Marc B回答;) – berty

回答

4

你可以有一個自引用外鍵,但你必須在兩個階段來創建它:

create table foo (
    id int not null auto_increment primary key, 
    parent int default null 
); 

alter table foo add foreign key (parent) references foo (id) 
    on delete restrict; 

你必須做它作爲一個獨立的alter,因爲它不會在表內工作定義本身 - 該表在該點不存在,因此FK驗證將失敗並且不允許創建表。

+0

謝謝,那是我一直在尋找的「自我指涉外鍵」。我不確定是否可以定義一個自引用外鍵。讓我嘗試。 –