Please read this example:
I got 2 datatables
PersonName: wich contains IdPersonName, Name and IdPersonLastName
PersonLastName: wich contains IdPersonLastName and LastName
I know that i need to make a relation between Person and PersonLastName
I want to make a view named
Person: wich contains PersonName/Name and PersonLastName/LastName
and i want to make updates to the two datatables when i insert data in the PersonView
I hope someone can Help Me
You need to create a Instead Of trigger on the view.http://msdn.microsoft.com/library/en-us/createdb/cm_8_des_08_35pv.asp|||
I Made This code
ALTER Trigger Trigger1
ON dbo.PersonComplete
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
IF(NOT EXISTS(
SELECT C.Name, C.LastName FROM PersonComplete C, inserted I
WHERE C.Name = I.Name AND C.LastName = I.LastName))
BEGIN
IF(NOT EXISTS (
SELECT L.LastName FROM PersonLastName L, inserted I
WHERE L.LastName = I.LastName))
BEGIN
INSERT INTO PersonLastName
SELECT LastName FROM inserted
END
INSERT INTO Person (LastName, Name)
SELECT L.id, I.Name FROM inserted I
INNER JOIN PersonLastName L ON I.LastName = L.LastName
END
END
It Works But Is It Correct?
and now i need an Update Trigger... i think i have to learn a little more about sql
|||This should do.
ALTER Trigger Trigger1
ON dbo.PersonComplete
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO PersonLastName
SELECT LastName FROM inserted i
WHERE not exists(SELECT 1 FROM PersonLastName pln WHERE pln.LastName=i.LastName)
INSERT INTO Person (LastName, Name)
SELECT L.id, I.Name FROM inserted I
INNER JOIN PersonLastName L ON I.LastName = L.LastName
END
No comments:
Post a Comment