I've got 2 tables :
Table A
create table A
(id int identity(1,1)
,KeyWord1 nvarchar(50)
,KeyWord2 nvarchar(50)
,KeyWord3 nvarchar(50)
)
Table B
Create table B
(id int identity(1,1)
,Address nvarchar(150)
,Chk int
)
The table A contains the following values :
insert into A
values
(166, 'elyse', 'vry')
,(243, 'virginia', 'beach')
,(134, 'aris', 'adium')
The Table B contains the following values :
insert into B
values
('35 stadium street, 134 Paris', null)
,('243, Stadiumù road from Paris', null)
My goal is to set the column B.chk with the number of occurence from table A when a new row is created on table B.
For example :
insert into B
values
('166, road to Champs elysee - 14215 Cdx Evry', null)
The trigger on table B should set B.Chk at 1 cause the following query is matching with the table A
select count(*) from inserted
where b.Address like '%166%'
and b.Address like '%elyse%'
and b.Address like '%vry%'
For this i should create a trigger on Table B but don't know how to "loop" on the other table. Should i user for, while or a cursor ?
You was right, i don't need a loop but chk column need to be set immediately after insert.
Here is my trigger :
Create trigger TR_Update_B
ON dbo.B
AFTER insert
AS
BEGIN
SET NOCOUNT ON;
DECLARE @docNo int
DECLARE @Result int
SELECT @DocNo=id FROM inserted;
SET @Result= (select count(*) from b
join a
on b.Address like '%'+a.KeyWord1+'%'
and b.Address like '%'+a.KeyWord2+'%'
and b.Address like '%'+a.KeyWord3+'%'
where b.id=@DocNo)
Update b set Chk = @Result where id=@DocNo
END