sql - Insert multiple rows into a table with a trigger on insert into another table -
i attempting create t-sql trigger insert x number of rows third table based upon data being inserted original table , data contained in second table; however, i'm getting sorts of errors in select portions of insert statement.
if comment out portion [qmgmt].[dbo].[skillcolumns].[columnid] in (select columnid [qmgmt].[dbo].[skillcolumns])
, intellisense gets rid of red lines.
table designs:
users
table - contains user infoskillcolumns
table - list of columns possible, filtered onproductgroupid
of userskills
table - contains data per user, 1 row everycolumnid
inskillcolumns
create trigger tr_users_insert on [qmgmt].[dbo].[users] after insert begin insert [qmgmt].[dbo].[skills]([userid], [displayname], [columnid]) select [itable].[userid], [itable].[displayname], [cid] in (select [columnid] [cid] [qmgmt].[dbo].[skillcolumns]) inserted [itable] inner join [qmgmt].[dbo].[skillcolumns] on [itable].[productgroupid] = [qmgmt].[dbo].[skillcolumns].[groupid] end go
is i'm looking accomplish possible trigger? can multiple rows inserted table in
keyword?
update:
after using answer provided j0e3gan, able create trigger in opposite direction:
create trigger tr_skillcolumns_insert_users on [qmgmt].[dbo].[skillcolumns] after insert begin [qmgmt].[dbo].[skills]([userid], [displayname], [columnid]) select [qmgmt].[dbo].[users].[userid], [qmgmt].[dbo].[users].[displayname], [itable].[columnid] inserted [itable] inner join [qmgmt].[dbo].[users] on [itable].[groupid] = [qmgmt].[dbo].[users].[productgroupid] [qmgmt].[dbo].[users].[userid] in (select [userid] [qmgmt].[dbo].[users]) end go
yes, can done after
trigger.
the column list not correct place in
criterion trying use, why underlined in red.
try adding in
criterion join
criteria instead:
create trigger tr_users_insert on [qmgmt].[dbo].[users] after insert begin insert [qmgmt].[dbo].[skills]([userid], [displayname], [columnid]) select [itable].[userid], [itable].[displayname], [qmgmt].[dbo].[skillcolumns].[columnid] inserted [itable] inner join [qmgmt].[dbo].[skillcolumns] on [itable].[productgroupid] = [qmgmt].[dbo].[skillcolumns].[groupid] , [qmgmt].[dbo].[skillcolumns].[columnid] in (select columnid [qmgmt].[dbo].[skillcolumns]) end go
alternatively add where
clause:
create trigger tr_users_insert on [qmgmt].[dbo].[users] after insert begin insert [qmgmt].[dbo].[skills]([userid], [displayname], [columnid]) select [itable].[userid], [itable].[displayname], [qmgmt].[dbo].[skillcolumns].[columnid] inserted [itable] inner join [qmgmt].[dbo].[skillcolumns] on [itable].[productgroupid] = [qmgmt].[dbo].[skillcolumns].[groupid] [qmgmt].[dbo].[skillcolumns].[columnid] in (select columnid [qmgmt].[dbo].[skillcolumns]) end go
Comments
Post a Comment