2016-09-06 19 views
0

我想說的給定行,Submitter_Employee_ID着平等Recipient_Id這個SQL觸發信號有什麼問題?

create trigger employee_no_rate_self before insert on Feedback 
for each row 
    begin 
    if NEW.Submitter_Employee_id = NEW.Recipient_Employee_id THEN 
    signal sqlstate '45000' 
    set message_text = 'Can\'t rate oneself'; 
    end if; 
end; 
+1

您需要更改分隔符:'分隔符|' –

回答

1
create table Feedback 
( id int auto_increment primary key, 
    message varchar(20) not null, -- brevity is King 
    Submitter_Employee_id int not null, 
    Recipient_Employee_id int not null 
); 


drop trigger if exists employee_no_rate_self; 
delimiter $$ 
create trigger employee_no_rate_self before insert on Feedback 
for each row 
    begin 
    if NEW.Submitter_Employee_id = NEW.Recipient_Employee_id THEN 
    signal sqlstate '45000' 
    set message_text = 'Can\'t rate oneself'; 
    end if; 
end; $$ 
delimiter ; 

insert Feedback (message,Submitter_Employee_id,Recipient_Employee_id) values 
('hello',1,2); 
-- success 

insert Feedback (message,Submitter_Employee_id,Recipient_Employee_id) values 
('bye',2,2); 
-- error: Can't rate oneself