Monday, March 19, 2012

How can i make an updatable view?

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