我正在構建由其他人已經構建並且幾乎沒有文檔的數據庫上的新東西。我需要添加一個新表,其中包含許多對現有表的引用。如何在添加外鍵時瞭解引用表的刪除操作
以下已經是表中已有wp_posts:
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_author | bigint(20) unsigned | NO | MUL | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| guid | varchar(255) | NO | | | |
| menu_order | int(11) | NO | | 0 | |
| post_type | varchar(20) | NO | MUL | post | |
| post_mime_type | varchar(100) | NO | | | |
| comment_count | bigint(20) | NO | | 0 | |
| legacy_id | int(11) | YES | | NULL | |
+-----------------------+---------------------+------+-----+---------------------+----------------+
我需要創建一個table標籤和tag_posts_reference,幫助了我很多很多的參考表。標籤表是wp_tags:
+-------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| tag | varchar(255) | YES | | NULL | |
+-------+---------------------+------+-----+---------+----------------+
我在創建表wp_tags_posts時遇到了問題。它給我以下錯誤:
mysql> create table wp_posts_tags(id bigint(20) unsigned auto_increment,
post_id bigint(20) unsigned not null,
tag_id bigint(20) unsigned not null,
primary key(id), index(post_id),
foreign key(post_id) references wp_posts(id) on Update cascade on delete restrict,
index(tag_id),
foreign key(tag_id) references wp_tags(id))
ENGINE = INNODB;
ERROR 1005 (HY000): Can't create table 'openexhibits_dev.wp_posts_tags' (errno: 150)
我認爲有一些刪除級聯操作,我應該補充。我增加了一些,並嘗試通過試驗和錯誤,但沒有一個工作。有沒有一種方法可以找到在創建外鍵引用時我應該使用的刪除級聯操作?有沒有像dec table_name這樣的命令可以顯示我這些操作?我嘗試刪除沒有行動,並刪除設置爲空等,但我不想盲目地嘗試通過試驗和錯誤,尤其是在處理表之間的關係。誰能幫我?非常感謝你。
表使用什麼存儲引擎?外鍵約束僅適用於InnoDB表。 – eggyal
我正在使用InnoDB。對不起,沒有添加它。 – Maddy