在这里,我使用“触发器”来自动增加带有前缀字符串的字段“ 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;

09-25 22:15