gpt4 book ai didi

mysql - 我应该在删除行之前每次都使用 MySQL TRIGGER 语句吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:49 25 4
gpt4 key购买 nike

我对 RDBMS 还很陌生。今天我在 MySQL 中遇到了 TRIGGER 这个话题。假设我有一个名为 person 的表和另一个名为 backup_person 的表来存储从表 person 中删除的行。

CREATE TABLE backup_person (
`personID` INT UNSIGNED NOT NULL,
`firstName` VARCHAR(20) NOT NULL,
`lastName` VARCHAR(20) NOT NULL,
`datetimeDeleted` DATETIME NOT NULL,
PRIMARY KEY(`personID`)
);

我有以下触发器语句:

DELIMITER //
CREATE TRIGGER archiveEmployees
BEFORE DELETE ON person FOR EACH ROW
BEGIN
INSERT INTO backup_person

VALUES (OLD.personID, OLD.firstName, OLD.lastName, NOW());
END//

DELIMITER ;

现在的问题是我是否应该在执行删除语句之前每次执行上面的触发器:例如:DELETE FROM persons WHERE firstName='Sabin' AND lastName = 'Jose';

或者在创建表时执行一次就足够了?

最佳答案

触发器是一种机制,每当满足触发条件时,它就会从数据库中自动执行。

在您的情况下,触发器定义是 BEFORE DELETE ON person。因此,每次在表 person 发生删除之前,数据库都会执行您的触发器。

另一方面,存储过程是您可以每次手动调用的函数。

另一种现有机制是事件。您可以按照您定义的时间表执行它们,即每小时自动执行一次。

关于mysql - 我应该在删除行之前每次都使用 MySQL TRIGGER 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856119/

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