日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MySQL刪除被其它表關(guān)聯(lián)的主表
數(shù)據(jù)表之間經(jīng)常存在外鍵關(guān)聯(lián)的情況,這時(shí)如果直接刪除父表,會(huì)破壞數(shù)據(jù)表的完整性,也會(huì)刪除失敗。

創(chuàng)新互聯(lián)提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì),品牌網(wǎng)站制作,廣告投放等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十載的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破成百上千,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

刪除父表有以下兩種方法:

  • 先刪除與它關(guān)聯(lián)的子表,再刪除父表;但是這樣會(huì)同時(shí)刪除兩個(gè)表中的數(shù)據(jù)。
  • 將關(guān)聯(lián)表的外鍵約束取消,再刪除父表;適用于需要保留子表的數(shù)據(jù),只刪除父表的情況。

下面介紹了如何取消關(guān)聯(lián)表的外鍵約束并刪除主表,也就是上面所說(shuō)的刪除父表的第二種方法。

 

在數(shù)據(jù)庫(kù)中創(chuàng)建兩個(gè)關(guān)聯(lián)表。創(chuàng)建表 tb_emp4 的 SQL 語(yǔ)句如下:

CREATE TABLE tb_emp4
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR (50)
);

接下來(lái)創(chuàng)建表 tb_emp5,SQL 語(yǔ)句如下:

CREATE TABLE tb_emp5
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp4_emp5 FOREIGN KEY (deptId) REFERENCES tb_emp4(id)
);

使用 SHOW CREATE TABLE 命令查看表 tb_ emp5 的外鍵約束,SQL 語(yǔ)句和運(yùn)行結(jié)果如下:

mysql> SHOW CREATE TABLE tb_emp5\G;
*************************** 1. row ***************************
       Table: tb_emp5
Create Table: CREATE TABLE `tb_emp5` (
  `id` int(11) NOT NULL,
  `name` varchar(25) DEFAULT NULL,
  `deptId` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_emp4_emp5` (`deptId`),
  CONSTRAINT `fk_emp4_emp5` FOREIGN KEY (`deptId`) REFERENCES `tb_emp4` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

由運(yùn)行結(jié)果可以看出,tb_emp5 表為子表,具有名稱為 fk_emp4_emp5 的外鍵約束;tb_emp4 為父表,其主鍵 id 被子表 tb_ emp5 所關(guān)聯(lián)。

刪除被數(shù)據(jù)表 tb_emp5 關(guān)聯(lián)的數(shù)據(jù)表 tb_emp4,SQL 語(yǔ)句如下:

mysql> DROP TABLE tb_emp4;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

由運(yùn)行結(jié)果可以看出,當(dāng)主表在存在外鍵約束時(shí),不能被直接刪除。

 

下面解除子表 tb_emp5 的外鍵約束,SQL語(yǔ)句和運(yùn)行結(jié)果如下:

mysql> ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

語(yǔ)句成功執(zhí)行后,會(huì)取消表 tb_emp4 和表 tb_emp5 之間的關(guān)聯(lián)關(guān)系。

解除關(guān)聯(lián)關(guān)系后,可以使用 DROP TABLE 語(yǔ)句直接刪除父表 tb_emp4,SQL 語(yǔ)句如下:

DROP TABLE tb_emp4;

最后通過(guò) SHOW TABLES 命令查看數(shù)據(jù)表列表,如下所示:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tb_emp5        |
| temp           |
+----------------+
2 rows in set (0.00 sec)

可以發(fā)現(xiàn),數(shù)據(jù)庫(kù)列表中已經(jīng)不存在名稱為 tb_emp4 的表,刪除成功。


文章題目:MySQL刪除被其它表關(guān)聯(lián)的主表
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/dpooeee.html