mysql刪除外鍵語法:
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設與網(wǎng)站營銷,提供網(wǎng)站設計制作、做網(wǎng)站、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、小程序設計、公眾號商城、等建站開發(fā),創(chuàng)新互聯(lián)網(wǎng)站建設策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。
1
alter table ss_accesscode drop foreign key 外鍵約束名稱;
外鍵定義:
如果公共關鍵字在一個關系中是主關鍵字,那么這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之間的相關聯(lián)系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字。
作用:
保持數(shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。 使兩張表形成關聯(lián),外鍵只能引用外表中的列的值或使用空值。
語法:ALTER TABLE 表名 DROP CONSTRAINT 外鍵名
例子:
mysql CREATE TABLE categories (
- category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
- name varchar(30) NOT NULL,
- PRIMARY KEY(category_id)
- ) ENGINE=INNODB;
mysql CREATE TABLE articles (
- article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,
- title varchar(255) NOT NULL,
- category_id tinyint(3) unsigned NOT NULL,
- member_id int(11) unsigned NOT NULL,
- INDEX (category_id),
- FOREIGN KEY (category_id) REFERENCES categories (category_id),
- PRIMARY KEY(article_id)
- ) ENGINE=INNODB;
外鍵名是什么:在上面的例子中category_id
那就需要先刪除主表里的記錄,再刪除子表里的記錄。
比如有如下數(shù)據(jù):
A表
uid ?name
1 ? ?張三
2 ? ?李四
B表
uid ?科目 ?分數(shù)
1 ? ? 數(shù)學 ? 90
1 ? ? 語文 ? 80
2 ? ? 數(shù)學 ? 70
2 ? ? 語文 ? 60
現(xiàn)在要刪除A表里張三的記錄,如果有外鍵,直接
delete?from?A?where?uid=1
這樣是刪除不了的。
所以要先刪除B表里uid=1的記錄再執(zhí)行上邊這句
delete?from?B?where?uid=1
然后再執(zhí)行
delete?from?A?where?uid=1
就可以了
1.lesson表: ?0?2?0?2?0?2?0?2?0?2?0?2?0?2?0?2?0?2?0?2?0?2?0?2!--StartFragment --?0?2我現(xiàn)在想刪除sid這個列的外鍵: 別的同學的機子都可以刪除,但是我的機子就不行,我們的MySql是一個版本的,不知道是什么原因?誰幫我解答下?????問題補充:div class="quote_title"hanyuanbo 寫道/divdiv class="quote_div"你的同學可以刪除,而且版本也一樣,可能是你們表的結構不同。你可以先將那個包含外鍵的那個表備份下,刪除掉那個表格,這樣就可以刪除外鍵了。之后再把備份恢復下就好了。img src="/images/smiles/icon_smile.gif"/ /div /div class="quote_title"hanyuanbo 寫道/divdiv class="quote_div"你的同學可以刪除,而且版本也一樣,可能是你們表的結構不同。你可以先將那個包含外鍵的那個表備份下,刪除掉那個表格,這樣就可以刪除外鍵了。之后再把備份恢復下就好了。img src="/images/smiles/icon_smile.gif"/ /div /就是因為有外鍵,所以導致列和表都刪除不了,除非把整個Database都刪除,那樣的話我做的整個database都沒了,只要找到能刪除外鍵的,就可以把這個列刪除,也就照樣可以把這個表刪除?。。。∮魫灠【褪遣荒軇h除哪個外鍵??!問題補充:div class="quote_title"hanyuanbo 寫道/divdiv class="quote_div"在刪除那個把該外鍵作為主鍵的表之前,你先把包含外鍵的那個表中的外鍵全部刪掉,置為null,或者直接將那列刪掉,這樣就沒有地方引用這些外鍵,你就可以將那個表刪除掉了。希望可以幫忙。記得以前做過類似的東西,刪除將外鍵作為主鍵的表之前,必須將引用到這個鍵的內(nèi)容置空,即沒有引用該鍵,這樣便可以刪除了。/div /alter table lesson drop index key; /nbsp; 可是這個語句刪除不了外鍵啊,我也知道只要把外鍵刪掉就可以刪除表了,關鍵是我不知道怎么刪外鍵了?。。?!
如上圖所示使用SHOW CREATE TABLE 表名稱;
記住CONSTRINT后面‘’這個符號中的內(nèi)容
這時候就可以使用ALTER TABLE 表名稱 DROP FOREIGN KEY 剛剛記住的內(nèi)容;
OK啦上述兩步就可以刪除外鍵啦
在MySQL中刪除一張表或一條數(shù)據(jù)的時候,出現(xiàn)
[Err] 1451 -Cannot deleteorupdatea parent row:
aforeignkeyconstraintfails (...)
這是因為MySQL中設置了foreign key關聯(lián),造成無法更新或刪除數(shù)據(jù)。可以通過設置FOREIGN_KEY_CHECKS變量來避免這種情況。
禁用外鍵約束,我們可以使用:
SETFOREIGN_KEY_CHECKS=0;
然后再刪除數(shù)據(jù)
啟動外鍵約束,我們可以使用:
SETFOREIGN_KEY_CHECKS=1;
查看當前FOREIGN_KEY_CHECKS的值,可用如下命令:
SELECT @@FOREIGN_KEY_CHECKS;