--> 触发器里用这句: insert into C表 select a.F_PID,a.F_PORT,b.F_PID,b.F_DATA,b.F_TW from A表 a join INSERTED b on charindex(';'+ltrim(b.F_TW)+';',';'+a.F_ROLE)+';')>0
--try,隨手寫的,沒測試create trigger tri_B_insert on B for insert AS begin insert into C select A.F_PID, A.F_Port, X.F_Pid, X.F_Data,X.F_TW from A inner join inserted X on A.F_Role='All' or charindex(';'+rtrim(X.F_Tw)+';' , ';'+rtrim(A.F_role)+';')>0end
--> ';'+a.F_ROLE)+';' 这里多了个括号:insert into C表 select a.F_PID,a.F_PORT,b.F_PID,b.F_DATA,b.F_TW from A表 a join INSERTED b on charindex(';'+ltrim(b.F_TW)+';',';'+a.F_ROLE+';')>0
insert into c (select a.F_PID,a.F_PORT,b.F_PID,b.F_DATA,b.F_TW from A left join B on (B.F_TW like +'%;'+A.F_ROLE+';%') OR A.F_ROLE='ALL' )
insert into c (select a.F_PID,a.F_PORT,b.F_PID,b.F_DATA,b.F_TW from A left join B on (';'+B.F_TW+';' like +';'+A.F_ROLE+';') OR A.F_ROLE='ALL' )
F_PID F_PORT F_ROLE
169.169.0.19 1234 1;2;3
172.0.0.1 5000 5
192.109.0.30 10000 All
B表
F_PID F_DATA F_TW
1 aaaaaaaa 1
2 bbbbbbbb 5
3 cccccccc 3
C表
F_PID F_PORT F_PID F_DATA F_TW
169.169.0.19 1234 1 aaaaaaaa 1
192.109.0.30 10000 3 aaaaaaaa 1
172.0.0.1 5000 2 bbbbbbbb 5
192.109.0.30 10000 3 bbbbbbbb 5
169.169.0.19 1234 1 cccccccc 3
192.109.0.30 10000 3 cccccccc 3
每当B表中有一条数据插入,就根据B.F_TW 查询A表中的 A.F_ROLE ,如果 A.F_ROLE='All' 那就把A表和B表的数据插入到C表中,如果 A.F_ROLE='1;2;3' 那就看A.F_ROLE 中是否有B.F_TW ,有的话就把A表和B表的数据插入到C表中,反之则不。
insert into C表 select a.F_PID,a.F_PORT,b.F_PID,b.F_DATA,b.F_TW from A表 a join INSERTED b on charindex(';'+ltrim(b.F_TW)+';',';'+a.F_ROLE)+';')>0
第 1 行: ')' 附近有语法错误。
for insert
AS
begin insert into C
select A.F_PID, A.F_Port, X.F_Pid, X.F_Data,X.F_TW
from A inner join inserted X
on A.F_Role='All'
or charindex(';'+rtrim(X.F_Tw)+';' , ';'+rtrim(A.F_role)+';')>0end