在这里,我使用“触发器”来自动增加带有前缀字符串的字段“ Project_Id”。
首先,我将最后一个Record和Store检索到变量中,然后将该记录的子字符串存储到另一个变量中,然后转换为Integer。
delimiter //
CREATE OR REPLACE TRIGGER tg_project_master
BEFORE INSERT ON project_master
FOR EACH ROW
BEGIN
DECLARE selectid VARCHAR(20);
DECLARE selid VARCHAR(20);
DECLARE autoi INT DEFAULT 0;
SET selectid := (select Project_id from project_master order by Project_id desc limit 1);
SET selid := SUBSTRING_INDEX(selectid,'O',-1);
SET autoi := 1+ CAST(@selectid AS INT);
INSERT INTO project_master SET NEW.Project_id = CONCAT('PRJ',@autoi);
END; //
DELIMITER;
将值递增1后,我将重新插入Table(Project_master)中。
这是我得到的错误。
错误代码1064,SQL状态42000:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以在'TRIGGER tg_project_master附近使用正确的语法
在project_master上插入之前
每行
开始
DEC'在第1行
第2行,第1列
最佳答案
根据documentation,您不能CREATE OR REPLACE
触发器,而只能CREATE
触发器。因此,请执行以下操作:
DROP TRIGGER IF EXISTS tg_project_master;
delimiter //
CREATE TRIGGER tg_project_master
BEFORE INSERT ON project_master
FOR EACH ROW
....
END; //
DELIMITER;