gpt4 book ai didi

MySQL创建表和触发器

转载 作者:行者123 更新时间:2023-11-29 06:34:28 25 4
gpt4 key购买 nike

谁能帮我理解这段代码的作用吗?

CREATE TABLE `exams` (

`id` int(11) NOT NULL, `score` int(2) NOT NULL, `class` int(11) NOT NULL, `date` date NOT NULL, PRIMARY KEY (`class`,`date`,`id`));

CREATE TRIGGER `trig3` BEFORE INSERT ON `exams` FOR EACH ROW SET @xxx = @xxx + 1;

SET @xxx = 0;

INSERT INTO `exams` VALUES (10001,24,1,'2013-09-16'), (10005,30,1,'2013-09-16'), (10083,30,1,'2014-03-21'), (10120,26,1,'2014-03-21'), (10035,23,1,'2014-07-22'), (10005,28,2,'2014-01-23'), (10001,27,2,'2014-06-30'), (10001,25,4,'2014-01-23'), (10083,22,4,'2014-01-23'), (10120,30,4,'2014-01-23'), (10005,22,4,'2014-03-21');

SELECT @xxx;

我了解表格的创建和值的插入,但我不明白其余的内容。

最佳答案

代码似乎是一种解决方法,用于计算或检查多重插入是否插入了所有记录。

    SELECT @xxx;

| @xxx |
| ---- |
| 11 |

但是 MySQL 没有本地方法来找出这一点。

参见demo

更简单的 MySQL 代码可以执行相同的操作,无需触发代码和设置。
但它需要一个新的表结构才能运行。

CREATE TABLE `esami` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `id_studente` int(11) NOT NULL
, `voto` int(2) NOT NULL
, `id_corso` int(11) NOT NULL
, `data` date NOT NULL
, UNIQUE KEY (`id_corso`,`data`,`id_studente`)
);

以及用于测试所有记录是否由多重插入插入的查询。

SELECT
COUNT(*)
FROM
esami
WHERE
id BETWEEN LAST_INSERT_ID() AND LAST_INSERT_ID() + 11;

参见demo

关于MySQL创建表和触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54541611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com