我有3個疑問:MySQL如何檢查查詢是否成功執行?
1. INSERT, 2. UPDATE and 3. DELETE
我想知道的是有反正這樣,如果成功,或不執行查詢,我可以直接檢查(即不運行另一個查詢檢查)?如果它不(即返回了一些錯誤/異常),那麼我想將該錯誤/異常保存到一些變量中?
例如,下面是我的疑問:
INSERT
查詢:
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;
謝謝。
下面是一個使用處理程序簡單的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; //
可以產生success_flag或狀態或每個手術後你算另一方面,你可以在日誌表中存儲錯誤/消息..這將傳達你的操作記錄:) –
嗨喬丹,雖然,我不想運行另一個操作/查詢來計算/ etc。另外,或者如果我這樣做,那麼我怎樣才能得到失敗時發生的錯誤代碼和消息? – narainsagar
順便說一句,我想插入錯誤'(code,message)'到我的'errors'表中。 – narainsagar