我有3个查询:
1. INSERT, 2. UPDATE and 3. DELETE
我想知道是否有方法可以直接检查查询是否成功执行,而无需运行另一个查询来进行检查。如果没有成功执行(即返回错误/异常),我希望将该错误/异常保存到某些变量中。例如,下面是我的查询:
插入查询:
INSERT INTO `users` (id, name, age) VALUES (NEW.id, NEW.name, NEW.age);
UPDATE
查询:
UPDATE `test_db2`.`users`
SET name = NEW.name,
age = NEW.age
WHERE id = NEW.id;
DELETE
查询:
DELETE FROM `test_db2`.`users`
WHERE id = OLD.id;
谢谢。
这是使用Handler的简单INSERT触发器(我尝试过):
DELIMITER //
-- TRIGGER FOR INSERT
DROP TRIGGER IF EXISTS `test_db1_users_ai`;
CREATE TRIGGER `test_db1_users_ai` AFTER INSERT ON `users` FOR EACH ROW
BEGIN
-- Perform the insert
INSERT INTO `test_db2`.`users` (id, name, age) VALUES (NEW.id, NEW.name, NEW.age);
-- Handler if this ^ above INSERT fails.
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
--SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
INSERT INTO `test_db1`.`errors` (error_code, error_message) VALUES (@errno, @text);
--SELECT @full_error;
END;
END; //
(代码,消息)
插入到我的errors
表中。 - narainsagar