gpt4 book ai didi

mysql - 无法在 SQLYog 中创建触发器

转载 作者:行者123 更新时间:2023-11-29 16:51:59 24 4
gpt4 key购买 nike

我看到了大量关于如何在 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 服务器版本相对应的手册,了解在 '. TableKey = uuid()' 在第 4 行

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 服务器版本相对应的手册,了解在 '.TableKey = UUID(); 附近使用的正确语法。 万一; END' 在第 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 列是什么,所以我一定是错误地指定了表或列?

最佳答案

您使用 Update .. Set 更新列陈述。您在设置变量值和更新列值之间进行混合匹配。请尝试以下操作:

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `databasename`.`tips_uuid` BEFORE INSERT
ON `databasename`.`tips`
FOR EACH ROW BEGIN

UPDATE `databasename`.tips
SET `databasename`.tips.TableKey = UUID()
WHERE `databasename`.tips.TableKey IS NULL;

END$$

DELIMITER ;

关于mysql - 无法在 SQLYog 中创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com