mysql怎么做级联删除 数据库删除级联

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中多表关联删除,怎样做?谢谢...

1、首先打开终端窗口。mysql -uroot -p进入mysql。

2、进入数据库,然后查看已有的表格,以免名字重复。

3、创建第一个表格,插入数据。

4、创建第二表格,插入数据。

5、创建第三个表格,并且和第一第二个表格关联。

6、INSERT INTO zoo VALUES(1, 1, 2);INSERT INTO zoo VALUES(1, 2, 1);这个时候就能够把他们直接的数据互相关联删除了。比如dog的1和cat的2。

MySQL写触发器,级联删除

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

用 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怎么实现多对多级联删除

delete t.*,t1.*,t2.* from tale_a t1, tale_a_b t, tale_b t2

where t1.id=t.aid and t.bid=t2.id and t1.你的删除条件

前提是 a表 a_b 表 b表 根据你的关联条件 inner join 能够查到内容

才会删除成功

t1.id=t.aid and t.bid=t2.id 替换成你的三个表的关联条件

怎么写mysql数据库延迟级联删除命令

使用 bcc 工具观测 MySQL:1)dbstat功能:将 MySQL/PostgreSQL 的查询延迟汇总为直方图

语法:

dbstat [-h] [-v] [-p [PID [PID ...]]] [-m THRESHOLD] [-u] [-i INTERVAL]              {mysql,postgres}

选项:

{mysql,postgres}                           # 观测哪种数据库-h, --help                                 # 显示帮助然后退出-v, --verbose                              # 显示BPF程序-p [PID [PID ...]], --pid [PID [PID ...]]  # 要观测的进程号,空格分隔-m THRESHOLD, --threshold THRESHOLD        # 只统计查询延迟比此阈值高的-u, --microseconds                         # 以微秒为时间单位来显示延迟(默认单位:毫秒)-i INTERVAL, --interval INTERVAL           # 打印摘要的时间间隔(单位:秒)

示例:

# 使用 sysbench 在被观测数据库上执行 select[root@liuan tools]# dbstat mysql -p `pidof mysqld` -uTracing database queries for pids 3350 slower than 0 ms...^C[14:42:26]     query latency (us)

2)dbslower

功能:跟踪 MySQL/PostgreSQL 的查询时间高于阈值

语法:

dbslower [-h] [-v] [-p [PID [PID ...]]] [-x PATH] [-m THRESHOLD]                 {mysql,postgres}

参数:

{mysql,postgres}                           # 观测哪种数据库 -h, --help                                 # 显示帮助然后退出 -v, --verbose                              # 显示BPF程序 -p [PID [PID ...]], --pid [PID [PID ...]]  # 要观测的进程号,空格分隔 -m THRESHOLD, --threshold THRESHOLD        # 只统计查询延迟比此阈值高的 -x PATH, --exe PATH                        # 数据库二进制文件的位置

示例:

# 使用sysbench在被观测数据库上执行update_index [root@liuan tools]# dbslower mysql -p `pidof mysqld` -m 2 Tracing database queries for pids 3350 slower than 2 ms... TIME(s)        PID          MS QUERY 1.765087       3350      2.996 UPDATE sbtest1 SET k=k+1 WHERE id=963 3.187147       3350      2.069 UPDATE sbtest1 SET k=k+1 WHERE id=628 5.945987       3350      2.171 UPDATE sbtest1 SET k=k+1 WHERE id=325 7.771761       3350      3.853 UPDATE sbtest1 SET k=k+1 WHERE id=5955. 使用限制

bcc 基于 eBPF 开发(需要 Linux 3.15 及更高版本)。bcc 使用的大部分内容都需要 Linux 4.1 及更高版本。

"bcc.usdt.USDTException: failed to enable probe 'query__start'; a possible cause can be that the probe requires a pid to enable" 需要 MySQL 具备 Dtrace tracepoint。


网站栏目:mysql怎么做级联删除 数据库删除级联
标题路径:http://scyanting.com/article/dodeios.html