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 info
  • skillcolumns table - list of columns possible, filtered on productgroupid of user
  • skills table - contains data per user, 1 row every columnid in skillcolumns
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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

inno setup - TLabel or TNewStaticText - change .Font.Style on Focus like Cursor changes with .Cursor -