none
sql serverde ilişkili tablolardan veri silmek için trigger oluşturma RRS feed

  • Soru

  • Merhaba. Tablolar aşağıdakı gibi bir biri ile ilişkili. HastaGelis tablosundan bir kayıtı silmem lazım. Aynı zamanda Hastagelis tablosundakı İd ile ilişkili olan o biri tablolardakı HastaGelisİd  - lerdeki verilerin silinmesi lazım.Bu işlemi yapa bilmem için nasıl bir trigger yapa bilirim?

     

    CREATE TABLE HastaGelis ( Id int IDENTITY(1,1) PRIMARY KEY NOT NULL, HastaId int NOT NULL, Tarih date NOT NULL, FOREIGN KEY(HastaId) REFERENCES Hastalar(Id) );

    CREATE TABLE Odenisler ( Id int IDENTITY(1,1) PRIMARY KEY NOT NULL, HastaGelisId int NOT NULL, Toplam smallmoney NOT NULL default 0, Odenilen smallmoney NOT NULL default 0, FOREIGN KEY(HastaGelisId) REFERENCES HastaGelis(Id) );

    CREATE TABLE Istekler ( Id int IDENTITY(1,1) PRIMARY KEY NOT NULL, HastaGelisId int NOT NULL, HizmetId int NOT NULL, FOREIGN KEY(HastaGelisId) REFERENCES HastaGelis(Id), FOREIGN KEY(HizmetId) REFERENCES Hizmetler(Id) );

    Insert into HastaGelis(HastaId,Tarih) values (1,'20180525'); Insert into Istekler (HastaGelisId,HizmetId) values (1,1); Insert into Istekler (HastaGelisId,HizmetId) values (1,2); Insert into Istekler (HastaGelisId,HizmetId) values (1,3); Insert into Odenisler(HastaGelisId,Toplam,Odenilen) values(1,35,20);


    Bu şekilde yapıyorum ama tablolarda ilişkili olduğu için hata alıyorum.

    CREATE TRIGGER dbo.GelisSil
    ON dbo.HastaGelis
    After delete
    AS
    declare @gelisid int
    
    select @gelisid = Id from HastaGelis
    delete from Odenisler where Odenisler.HastaGelisİd = @gelisid
    delete from Istekler where Istekler.HastaGelisİd = @gelisid

    26 Mayıs 2018 Cumartesi 13:11

Yanıtlar