2009-05-15 37 views
5

Tôi có một truy vấn như sau:Tại sao tôi nhận được thông báo "Phiên bản MySQL này chưa hỗ trợ '...'"?

delimiter $$ 
DROP TRIGGER IF EXISTS TR_SCIN_BANK_UPD$$ 
CREATE TRIGGER TR_SCIN_BANK_UPD 
AFTER UPDATE ON SCIN_BANK 
FOR EACH ROW 
BEGIN 
    IF OLD.BANK_NAME != NEW.BANK_NAME THEN 
    INSERT into SCIN_BANK_LOG SET BANK_ID=OLD.BANK_ID, BANK_NAME=OLD.BANK_NAME, LAST_UPD_USER_ID=OLD.LAST_UPD_USER_ID, LAST_UPD_TS=now(); 
    END IF; 
    IF OLD.BANK_DESC != NEW.BANK_DESC THEN 
    INSERT into SCIN_BANK_LOG SET BANK_ID=OLD.BANK_ID, BANK_DESC=OLD.BANK_DESC, LAST_UPD_USER_ID=OLD.LAST_UPD_USER_ID, LAST_UPD_TS=now(); 
    END IF; 
END$$ 

khi thực hiện tôi nhận được

Phiên bản này của MySQL chưa hỗ trợ 'nhiều trigger với thời gian hành động tương tự và sự kiện cho một bảng'

lỗi này có thể cung cấp giải pháp cho bất kỳ lỗi nào không?

Trả lời

8

Tôi đoán đã có kích hoạt AFTER UPDATE trên bảng đó nhưng không được đặt tên là TR_SCIN_BANK_UPD, có nghĩa là đường dây DROP TRIGGER IF EXISTS của bạn không có gì.

0

có mysql không hỗ trợ điều này nếu bạn sử dụng cùng một sự kiện với tên trình kích hoạt khác nhau và cùng một lúc.

tốt hơn, cho điều này, bạn nên sử dụng nếu điều kiện ở đây: như dưới đây:

delimiter $$ 
create trigger trigger_name 
AFTER insert 
on t1 
for each row 
begin 
    if new.col1 like '%Sabcd%' 
    then 
    update t2 inner join t3 on t2.col1=t1.col1 
    set t2.col2=0 ; 
    end if; 
    if new.col1 like '%dcba%' 
    then 
    update t2 inner join t3 on t2.col1=t1.col1 
    set t2.col2=02; 
    end if; 
end; 
$$ 
+0

Tôi không nghĩ cú pháp cập nhật là chính xác. –

+0

làm việc cho tôi thưa ngài .. hãy cho tôi biết điều gì khiến bạn nghĩ như thế này – user21546

1

Nâng cấp Mysql lên phiên bản 5.6.27 giải quyết nó cho tôi: phiên bản

Server: 5.6.27-0ubuntu0. 14.04.1 (Ubuntu)

Các vấn đề liên quan