这个问题在这里已经有答案了:
mysql设置默认id uuid(2个答案)
我可以在mysql中使用函数作为默认值吗(8个答案)
两年前关门了。
我在mysql/sqlyog中看到了大量关于如何做到这一点的例子,但是我所做的每件事都给了我一个错误。我一定是误会了一些关键的东西,好像应该这么简单。
我想让一个列使用uuid(),因为它是默认的,而且我已经读到触发器是解决这个问题的方法。
我尝试过以下方法,但都失败了:
CREATE TRIGGER `tips`.`TableKey` BEFORE INSERT ON `tips`.`TableKey` FOR EACH ROW
SET `tips`.`TableKey` = UUID();
错误:未知系统变量“tablekey”
CREATE TRIGGER UUID_Trigger
AFTER INSERT ON `databasename`.`tips`
FOR EACH ROW
SET `databasename`.`tips`.`TableKey` = UUID();
错误:您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得使用near'的正确语法。 TableKey
=第4行的uuid()'
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `databasename`.`tips_uuid` BEFORE INSERT
ON `databasename`.`tips`
FOR EACH ROW BEGIN
IF `databasename`.tips.TableKey IS NULL
THEN
SET `databasename`.tips.TableKey = UUID();
END IF;
END$$
DELIMITER ;
错误:您的sql语法有错误;检查与您的mysql服务器版本对应的手册,以获得使用near'.tablekey=uuid()的正确语法;结束if;在第8行结束
CREATE TRIGGER tips_uuid_default
BEFORE INSERT ON tips
FOR EACH ROW
IF tips.TableKey IS NULL
THEN
SET tips.TableKey = UUID();
END IF;
错误:错误代码:1193未知系统变量“tablekey”
和
错误代码:1064您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得在第1行“end if”附近使用的正确语法
有人能告诉我我做错了什么吗?它似乎从不知道tablekey列是什么,所以我必须错误地指定表或列?
1条答案
按热度按时间qojgxg4l1#
使用更新列
Update .. Set
声明。在设置变量值和更新列值之间进行混合匹配。请尝试以下操作: