mysql怎么删除级联 mysql级联删除语句

MySQL写触发器,级联删除

我就不造你的 学生表和成绩表了.

十年的江北网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整江北建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“江北网站设计”,“江北网站推广”以来,每个客户项目都认真落实执行。

用 test_main 表 和 test_sub  代替说明

-- 创建测试主表. ID 是主键.

CREATE TABLE test_main (

id      INT   NOT NULL,

value   VARCHAR(10),

PRIMARY KEY(id)  

);

-- 创建测试子表. 

CREATE TABLE test_sub (

id      INT  NOT NULL,

main_id INT ,

value   VARCHAR(10),

PRIMARY KEY(id)  

);

-- 插入测试主表数据.

INSERT INTO test_main(id, value) VALUES (1, 'ONE');

INSERT INTO test_main(id, value) VALUES (2, 'TWO');

-- 插入测试子表数据.

INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE');

INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO');

通过  DELETE CASCADE  外键约束的处理机制来处理

mysql ALTER TABLE test_sub

-   ADD CONSTRAINT main_id_cons

-   FOREIGN KEY (main_id)

-   REFERENCES  test_main(id)

-   ON DELETE CASCADE//

Query OK, 2 rows affected (0.16 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql DELETE FROM

-   test_main

- WHERE

-   id = 1;

- //

Query OK, 1 row affected (0.02 sec)

mysql SELECT

-   *

- FROM

-   test_sub;

- //

+----+---------+--------+

| id | main_id | value  |

+----+---------+--------+

|  2 |       2 | TWOTWO |

+----+---------+--------+

1 row in set (0.00 sec)

如果你非要使用触发器来处理, 那么下面是一个例子:

-- 创建测试主表. ID 是主键.

CREATE TABLE t_test_main (

id      INT   NOT NULL,

value   VARCHAR(10),

PRIMARY KEY(id)  

);

-- 创建测试子表. 

CREATE TABLE t_test_sub (

id      INT  NOT NULL,

main_id INT ,

value   VARCHAR(10),

PRIMARY KEY(id)  

);

-- 插入测试主表数据.

INSERT INTO t_test_main(id, value) VALUES (1, 'ONE');

INSERT INTO t_test_main(id, value) VALUES (2, 'TWO');

-- 插入测试子表数据.

INSERT INTO t_test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE');

INSERT INTO t_test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO');

DELIMITER //

CREATE TRIGGER tr_t_test_main_Del

BEFORE DELETE ON t_test_main

FOR EACH ROW

BEGIN

DELETE FROM t_test_sub WHERE main_id = OLD.id;

END;

//

DELIMITER ;

mysql delete from  t_test_main  where id = 1;

Query OK, 1 row affected (0.01 sec)

mysql select * from t_test_sub;

+----+---------+--------+

| id | main_id | value  |

+----+---------+--------+

|  2 |       2 | TWOTWO |

+----+---------+--------+

1 row in set (0.00 sec)

mysql怎么设置外键为级联删除,级联更新

设定外键为级联删除就可以了。

alter table B add constraint fk_ID foreign key (ID) references A(ID) on delete cascade;

这样只需:delete from A where ID=nnnn; 就可以自动删除对应B表内容了。

通过外键无法实现同步更新。

mysql怎么设置级联删除

这个在建表的时候就可以指定了

CREATE TABLE buildings (

building_no INT PRIMARY KEY AUTO_INCREMENT,

building_name VARCHAR(255) NOT NULL,

address VARCHAR(255) NOT NULL

);

CREATE TABLE rooms (

room_no INT PRIMARY KEY AUTO_INCREMENT,

room_name VARCHAR(255) NOT NULL,

building_no INT NOT NULL,

FOREIGN KEY (building_no)

REFERENCES buildings (building_no)

ON DELETE CASCADE

);

当执行

DELETE FROM buildings

WHERE

building_no = 2;的时候,rooms表中的building_no =2的记录都会被删掉。

mysql怎么删除两张有关联的表的数据

DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:

1 delete from t1 where 条件

2 delete t1 from t1 where 条件

3 delete t1 from t1,t2 where 条件

4 delete t1,t2 from t1,t2 where 条件

前 3者是可行的,第4者不可行。

也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。

1、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除 掉1 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id

2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉1 DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL

3、 从两个表中找出相同记录的数据并把两个表中的数据都删除掉1 DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25

注意此处的delete t1,t2 from 中的t1,t2不能是别名

如:1 delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25

在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)

上述语句改 写成1 delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25

在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)


本文名称:mysql怎么删除级联 mysql级联删除语句
链接URL:http://ybzwz.com/article/doshipj.html