為已經建立的資料表新增外來鍵
語法:alter table 表名 add constraint fk_name(外來鍵名稱) foreign key(外來鍵欄位名) references 外表表名(對應的表的主鍵欄位名);
例: alter table tb_active add constraint fk_tbactive_tbuser_id foreign key(user_id) references tb_user(id)
create
table
`tb_active`(
`id`
int(11) not
null auto_increment,
`title`
varchar(100) character
set utf8 collate utf8_unicode_ci not
null,
`content` text character
set utf8 collate utf8_unicode_ci not
null,
`user_id`
int(11) not
null,
primary
key (`id`),
key`user_id` (`user_id`),
constraint
`fk_id`
foreign
key (`user_id`) references
`tb_user` (`id`)
)engine=innodb default charset=latin1
刪除外來鍵
語法: alter table table_name drop foreign key key_id;
例: alter tabletb_active
drop foreign keyfk_id
自動鍵更新和刪除:
外來鍵可以保證新插入的記錄的完整性,但是,如果在references從句中已命名的表刪除記錄會怎麼樣?在使用同樣的值作為外來鍵的輔助表中會發生什麼?
很明顯,那些記錄也應該被刪除,否則在資料庫中就會有很多無意義的孤立記錄,mysql可以通過向foreign key…references修飾符新增乙個on delete 或on update子句簡化任務,它告訴了資料庫在這種情況如何處理孤立任務。
關鍵字含義
cascade
刪除包含與已刪除鍵值有參照關係的所有記錄
set null
修改包含與已刪除鍵值有參照關係的所有記錄,使用null值替換(只能用於已標記為not null的字段)
restrict
拒絕刪除要求,直到使用刪除鍵值的輔助表被手工刪除,並且沒有參照時(這是預設設定,也是最安全的設定)
no action
什麼也不做
新增外來鍵
alter table locstock add foreign key locstock_ibfk(stockid) references product(stockid)
locstock 為表名, locstock_ibfk為外鍵名 第乙個括號裡填寫外來鍵列名, product為表名,第二個括號裡是寫外來鍵關聯的列名
刪除外來鍵
alter table locstock drop foreign key locstock_ibfk
檢視表有哪些外來鍵
show create table locstock
[constraint symbol] foreign key [id] (index_col_name, …)
references tbl_name (index_col_name, …)
[on delete ]
[on update ]
mysql新增外來鍵
為已經新增好的資料表新增外來鍵 語法 alter table 表名 add constraint fk id foreign key 你的外來鍵欄位名 references 外表表名 對應的表的主鍵欄位名 例 alter table tb active add constraint fk id fo...
mysql新增外來鍵
為已經新增好的資料表新增外來鍵 語法 alter table 表名 add constraint fk id foreign key 你的外來鍵欄位名 references 外表表名 對應的表的主鍵欄位名 例 alter table tb active add constraint fk id fo...
mysql新增外來鍵
為已經新增好的資料表新增外來鍵 語法 alter table 表名 add constraint fk id foreign key 你的外來鍵欄位名 references 外表表名 對應的表的主鍵欄位名 例 alter table tb active add constraint fk id fo...