[sql] trigger usuń wszystko

0

Mam pewien problem a mianowicie mam 2 tabelki "Wykonawca" i "Pensja"

Wykonawca :

wy_imie
wy_nazwisko
wy_idprac
pe_idw

Pensja :

pe_idw
pe_ile za h
pe_przepracowany czas

połączone one ->many

Teraz chciałbym aby po wydaniu polecenie:
Delete From Wykonawcy Where wy_idprac = costam, zeby baza usunęła mi wszystkie wpisy z Zawartosc gdzie pe_idw = właśnie ten usuwany wpis i aż do poziomu najniżej, więc w tym celu stworzyłem sobie trigera:

[Kod SQL]
CREATE TRIGGER usuwanie ON "DBA"."WYKONAWCA"
FOR INSERT, UPDATE, DELETE
AS
DECLARE @wy_idprac int
Select @wy_idprac = (Select pe_idw From Deleted)
Begin
DELETE FROM "DBA"."WYKONAWCA" WHERE wy_idprac IN (@wy_idprac)
End

zatwierdziło go , ale po wydaniu delete from wykonawca where wy_idprac= costam usuwa pracownika z tabeli wykonawca lecz dane w tabeli pensja zostają :(

proszę o pomoc

0

Myślę, że odpowiednie klucze obce z "ON DELETE CASCADE" powinny załatwić sprawę.

pozdrawiaMM

0

a jak je ustawic?? Jak wygląda składnia

0
create table panstwa
(
id int not null identity(1,1) constraint PK_panstwa PRIMARY KEY,
panstwo nvarchar(20) not null constraint UI_panstwa_panstwo UNIQUE
)

create table miasta
(
id int not null identity(1,1),
panstwoid int not null constraint FK_miasta_panstwo foreign key references panstwa(id) on delete cascade,
miasto nvarchar(50) not null
)
go

set nocount on
insert panstwa values('Polska')
insert panstwa values('Niemcy')
insert panstwa values('Rosja')

insert miasta values(1, 'Warszawa')
insert miasta values(1, 'Poznan')
insert miasta values(1, 'Katowice')

insert miasta values(2, 'Bonn')
insert miasta values(2, 'Kiel')

insert miasta values(3, 'Moskwa')
set nocount off
go
select * from miasta
-- ilosc rekordow - 6
delete from panstwa where id=2
select * from miasta
-- ilosc rekordow - 4
0

ale to chyba jest pod mysql a ja mam SQL anywhere 9

0

Zajebisty tytuł, przypomniał mi się Kononowicz...

1 użytkowników online, w tym zalogowanych: 0, gości: 1