4
在MySQL中,如何創建此錯誤消息自定義消息:創建自定義錯誤消息的MySQL
不能刪除或更新父行:外鍵約束失敗 (
database
jenis_fasum
,約束jenis_fasum_ibfk_1
FOREIGN KEY (id_kategori
)參考kategori_fasum
(id_kategori
))
使用觸發器可能?有人可以提供一個例子嗎?
感謝您的幫助
在MySQL中,如何創建此錯誤消息自定義消息:創建自定義錯誤消息的MySQL
不能刪除或更新父行:外鍵約束失敗 (
database
jenis_fasum
,約束jenis_fasum_ibfk_1
FOREIGN KEY (id_kategori
)參考kategori_fasum
(id_kategori
))
使用觸發器可能?有人可以提供一個例子嗎?
感謝您的幫助
我不認爲它可以在TRIGGER
來完成,但是它可以在MySQL 5.5的存儲過程來完成。
這裏是默認的錯誤消息:
mysql> INSERT INTO area SET location_id = 'invalid';
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`rates`.`area`, CONSTRAINT `area_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `location` (`id`))
mysql> SHOW ERRORS;
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Error | 1452 | Cannot add or update a child row: a foreign key constraint fails (`rates`.`area`, CONSTRAINT `area_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `location` (`id`)) |
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
下面是我們的存儲過程:
DROP PROCEDURE IF EXISTS test1;
DELIMITER //
CREATE PROCEDURE test1()
DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY INVOKER
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '23000'
BEGIN
SIGNAL SQLSTATE '23000' SET
MYSQL_ERRNO = 1452,
MESSAGE_TEXT = 'Yo! Error 23000!';
END;
INSERT INTO area SET location_id = 'invalid';
END;
//
DELIMITER ;
這裏是我們的自定義錯誤消息:
mysql> CALL test1();
ERROR 1452 (23000): Yo! Error 23000!
mysql> SHOW ERRORS;
+-------+------+------------------+
| Level | Code | Message |
+-------+------+------------------+
| Error | 1452 | Yo! Error 23000! |
+-------+------+------------------+
1 row in set (0.00 sec)
順便說一句,爲什麼你要這個?