gpt4 book ai didi

MySQL触发删除、更新记录?

转载 作者:行者123 更新时间:2023-11-29 12:31:10 26 4
gpt4 key购买 nike

我可以在不使用存储过程的情况下实现这一目标吗?这是我的表格:

---账户表

DROP TABLE IF EXISTS `account`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_god` int(11) DEFAULT NULL,
`date_created` datetime DEFAULT CURRENT_TIMESTAMP,
`deleted` int(11) DEFAULT '0',
`history` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

---触发

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER account_update AFTER UPDATE ON account FOR EACH ROW INSERT INTO account_history VALUES(NEW.id, NEW.id_god, NEW.date_created, NEW.deleted, NEW.history) */;;

---账户历史表

DROP TABLE IF EXISTS `account_history`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account_history` (
`id` int(11) DEFAULT NULL,
`id_god` int(11) DEFAULT NULL,
`date_created` datetime DEFAULT NULL,
`deleted` int(11) DEFAULT '0',
`history` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

我的第一个表“account”几乎是一个普通表,但请注意,我有一个名为“deleted”的字段,默认值为 0。我有一个“更新时”工作触发器,用于将帐户记录复制到 account_history 表。我也有一个类似的插入触发器,但我省略了。当我删除一条记录时,我想将删除的值设置为 1 以跟踪它在我的 account_history 表中的删除情况。

最初,我打算运行更新查询,将帐户表中的删除设置为 1,这将触发“更新时”,然后使用第二个查询删除记录。我想知道是否可以仅通过删除来实现我想要的操作。我可以有一个触发器在我的帐户表中或直接在我的 account_history 表中设置“删除时”deleted=1 吗?是的,我实际上想从我的帐户表中永久删除该记录。我不想使用存储过程。

最佳答案

明白了,只需要将插入语句添加到我的触发器中

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER account_delete BEFORE DELETE ON account
FOR EACH ROW BEGIN
INSERT INTO account_history (id,id_god,date_created,deleted,history) VALUES (OLD.id,OLD.id_god,OLD.date_created,1,OLD.history);
END */;;

关于MySQL触发删除、更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476816/

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