我試圖創建一個觸發器,但它顯示「不允許顯式和隱式命令」。我試圖在這裏提及其他主題,但我不清楚。我的觸發器代碼。Mysql觸發器顯式隱式命令不允許
USE `vms`;
DELIMITER $$
CREATE TRIGGER `trg_bookingdetails` AFTER INSERT ON `bookingdetails` FOR EACH ROW
BEGIN
declare i int default 1;
DECLARE v_ga INT DEFAULT 0;
declare v_bid varchar(20);
declare v_bdate date;
declare v_sdate date;
declare v_sid varchar(20);
declare v_bcode varchar(10);
declare v_q int;
declare v_vid int;
declare v_jj int;
declare v_ss int;
declare v_mj int;
create temporary table if not exists temp_boo
(
`BID` VARCHAR(50) NULL DEFAULT NULL,
`BDate` DATE NULL DEFAULT NULL,
`SDate` DATE NULL DEFAULT NULL,
`SID` VARCHAR(20) NULL DEFAULT NULL,
`BCode` VARCHAR(20) NULL DEFAULT NULL,
`VID` VARCHAR(20) NULL DEFAULT NULL
);
begin
select bm.BID,bm.BDate,bm.SDate,bm.SID,bd.BCode, bd.Quantity
into v_bid,v_bdate,v_sdate,v_sid,v_bcode,v_ga
from bookingmaster bm, bookingdetails bd
where bm.sdate=new.SDate and bm.BID=bd.BID and bd.BCode='GAP'
and bm.BID=new.BID;
end;
WHILE (i<=v_ga) DO
Insert into temp_boo(BID,BDate,SDate,SID,BCode)
VALUES(new.BID,new.BDate,new.SDate,new.SID,new.BCode);
SET i=i+1;
END WHILE;
set i=1;
begin
select bm.BID,bm.BDate,bm.SDate,bm.SID,bd.BCode, bd.Quantity
into v_bid,v_bdate,v_sdate,v_sid,v_bcode,v_jj
from bookingmaster bm, bookingdetails bd
where bm.sdate=new.SDate and bm.BID=bd.BID and bd.BCode='JJP'
and bm.BID=new.BID;
end;
WHILE (i<=v_jj) DO
Insert into temp_boo(BID,BDate,SDate,SID,BCode)
VALUES(new.BID,new.BDate,new.SDate,new.SID,new.BCode);
SET i=i+1;
END WHILE;
set i=1;
begin
select bm.BID,bm.BDate,bm.SDate,bm.SID,bd.BCode, bd.Quantity
into v_bid,v_bdate,v_sdate,v_sid,v_bcode,v_ss
from bookingmaster bm, bookingdetails bd
where bm.sdate=new.SDate and bm.BID=bd.BID and bd.BCode='SSP'
and bm.BID=new.BID;
end;
WHILE (i<=v_ss) DO
START transaction;
Insert into temp_boo(BID,BDate,SDate,SID,BCode)
VALUES(new.BID,new.BDate,new.SDate,new.SID,new.BCode);
SET i=i+1;
END WHILE;
set i=1;
begin
select bm.BID,bm.BDate,bm.SDate,bm.SID,bd.BCode, bd.Quantity
into v_bid,v_bdate,v_sdate,v_sid,v_bcode,v_mj
from bookingmaster bm, bookingdetails bd
where bm.sdate=new.SDate and bm.BID=bd.BID and bd.BCode='MJP'
and bm.BID=new.BID;
end;
WHILE (i<=v_mj) DO
Insert into temp_boo(BID,BDate,SDate,SID,BCode)
VALUES(new.BID,new.BDate,new.SDate,new.SID,new.BCode);
SET i=i+1;
END WHILE;
Insert into bookinguser (BID,BDate,SDate,SID,BCode)
(select BID,BDate,SDate,SID,BCode from temp_boo
where (BID,BDate,SDate,SID,BCode)
not in (select BID,BDate,SDate,SID,BCode from bookinguser));
drop table temp_boo;
end
請讓我知道我在哪裏做錯誤。
[19.3.1觸發語法和實施例](http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html): 「觸發器不能使用顯式或隱式地開始或結束事務的語句,例如START TRANSACTION,COMMIT或ROLLBACK。」 – wchiquito
我可以對我的代碼做些什麼改變...... – Sachin