我正在创建一个表(使用mysql 8.0),希望在其中的两列(比如column1和column2)上添加check约束。由于check约束在mysql中不可用,我创建了before-insert触发器。下面是添加触发器的mysql查询。
DELIMITER $$
USE `database_name`$$
CREATE DEFINER = CURRENT_USER TRIGGER `database_name`.`table_name_BEFORE_INSERT`
BEFORE INSERT ON `table_name`
FOR EACH ROW
BEGIN
IF (NEW.column1 = NULL AND NEW.column2 = NULL)
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'column1 and column2 both cannot be null';
ELSEIF (NEW.column1 IS NOT NULL AND NEW.column2 IS NOT NULL)
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'column1 and column2 both cannot have a value';
END IF;
END$$
DELIMITER ;
在运行这个脚本时,我得到了错误代码:1419。您没有超级权限,二进制日志记录已启用(您可能希望使用不太安全的log\u bin\u trust\u function\u creators变量)。我正在使用的用户具有触发器权限。在此方面的任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!