嗨,我有一個學生表,其中我有像用戶名,usertype,密碼等列 我已經寫了一個觸發器,爲這個表創建一個用戶名爲usertype'學生'這裏是觸發代碼Sql觸發器不工作
> DROP TRIGGER `sasis`.`USERNAMEAutoGen`;
DELIMITER ||
CREATE TRIGGER `sasis`.`USERNAMEAutoGen`
BEFORE INSERT ON `sasis`.`userinfo`
FOR EACH ROW BEGIN
if (usertype== 'Student')
declare i varchar(2);
declare usrnm varchar(20);
declare fullusrnm varchar(255);
declare curyr varchar(10);
declare curm varchar(10);
declare rcount varchar(50);
set i='I';
select date_format(now(),'%y') into curyr;
select date_format(now(),'%b') into curm;
set usrnm=concat(i,curyr,upper(curm));
select count(*) into rcount from userinfo where username like concat(usrnm,'%');
if(rcount<9) then
set rcount=concat('0000',(rcount+1));
elseif (rcount<99) then
set rcount=concat('000',(rcount+1));
elseif (rcount<999) then
set rcount=concat('00',(rcount+1));
end if;
set fullusrnm=concat(i,curyr,upper(curm),rcount);
if (new.username is null or trim(new.username)='') then
set NEW.username=fullusrnm;
end if; end if; END||
DELIMITER ;
這是工作之前,但現在它顯示出一些錯誤,指出,有近一個語法錯誤「==」學生')聲明我VARCHAR(2)。等我不知道如何解決它 請幫助您的寶貴答案。提前致謝。我試過「如果(usertype ='學生')THEN」,但它然後顯示錯誤消息像語法錯誤附近declare我varchar(2);
我試過它然後它顯示語法錯誤附近declare我varchar(2); – Pranjut
我更新了答案。聲明必須在聲明的第一部分,並且您在第一個「IF」語句中擁有「THEN」關鍵字。 –
謝謝,這是我做的傻.. – Pranjut