【发布时间】:2019-12-17 14:37:09
【问题描述】:
我在 Laravel 中有一个程序,用户注册后他们需要一个徽章编号,我希望在他们在数据库中注册后随机生成该编号。我应该使用触发器,但我在语法上很挣扎。
用户表
id bigint(20)
name varchar(255)
surname varchar(255)
nr_legitimatie varchar(255)
我希望“nr_legitimatie”字段是唯一的。 这是我尝试过的,但没有成功
触发器
CREATE OR REPLACE TRIGGER numar_leg
AFTER INSERT ON users
FOR EACH ROW
DECLARE
legitimatie VARCHAR(191)
BEGIN
legitimatie =('
SELECT FLOOR(RAND() * 99999) AS random_num
FROM numbers_mst
WHERE "random_num" NOT IN (SELECT my_number FROM numbers_mst)
LIMIT 1' );
set `users`.`nr_legitimatie` = legitimatie;
END;
【问题讨论】:
-
通常我们会在
BEFORE INSERT触发器中处理对列的赋值,而不是AFTER INSERT触发器。好像我们正在跟踪已使用的随机值,将它们存储在一个表中,似乎我们还想存储我们用于当前行的新值。
标签: mysql database laravel triggers