tsql - SQL Server trigger for update inserted row -
i want create trigger this: have 2 tables:
table 1:
id- integer - primary keystatus- integer - values: 1 busy , 0 available
table 2:
id- integer - primary key - autogeneratedid2- integer - null or value of id table1status- integer - values: 1 working 0 waitingcol1- irrelevant column 1col2- irrelevant column 2col3- irrelevant column 3
and when users this
insert table2 (col1, col2, col3) values (val1, val2, val3); the trigger should check table1 , if finds , available id (status = 0) updates inserted row table2.id2 = table1.id , table2.status becomes 1 otherwise table2.id2 remains null , table2.status becomes 0.
now i've tried many ways , error messages.
this latest attempt:
create trigger mytrigger on table2 after insert begin if not exists (select top 1 id table1 status = 0) begin update table2 set status = 0 table2.id = inserted.id end else begin set status = 1 table2.id = inserted.id set table.id@ = (select top 1 id table1 status = 0) table2.id = inserted.id end end and errors:
msg 102, level 15, state 1, procedure mytrigger, line 17
incorrect syntax near '='.line 17: set status = 1
msg 156, level 15, state 1, procedure mytrigger, line 22
incorrect syntax near keyword 'where'.line 22: table2.id = inserted.id
and if feel generous next thing need create trigger when column deleted table2 sets status of corresponding id in table1 0 (available)
i using sql server 2012
your second statement missing update command:
set status=1 table2.id= inserted.id set table.id@ = (select top 1 id table1 status=0) table2.id= inserted.id should be
update table2 set table2.status=1, table2.id = (select top 1 id table1 status=0) join inserted on table2.id= inserted.id; this should fix errors, however, entire trigger refactored bit cleaner, outside of scope of question.
Comments
Post a Comment