/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Slette post samt tilhørende poster i under~
Fra : Ukendt


Dato : 06-05-08 21:24

Hej.

Hvordan er det, at man kan få sin database (Firebird) til automatisk at
slette tilhørende poster i en undertabel.

Forstået på den måde, at Tabel1 er en vareliste og tabel2 er en liste med
køb af varer. Når en vare fra varelisten slettes, skal alle tilhørende /
relaterede køb af denne vare fjernes fra købslisten. Der er relateret via en
foreign key.
(Lad være med at spekulere på, at eksemplet har ihensigtsmessigheder idet
det er et forenklet eksempel)

I IBExpert under den nævnte foreign key er der mulighed for at vælge noget
"update rule" hvor der kan vælges mellem "no action, Cascade, Set null, Set
default. Er jeg på rette vej og hvad er forskellen på dem?



 
 
Michael Zedeler (07-05-2008)
Kommentar
Fra : Michael Zedeler


Dato : 07-05-08 00:00

Michael Sørensen wrote:
> Hvordan er det, at man kan få sin database (Firebird) til automatisk at
> slette tilhørende poster i en undertabel.
> [klip]
> I IBExpert under den nævnte foreign key er der mulighed for at vælge noget
> "update rule" hvor der kan vælges mellem "no action, Cascade, Set null, Set
> default. Er jeg på rette vej og hvad er forskellen på dem?

Når du nævner "update rule" er det noget der har med UPDATE at gøre. Du
skriver at du skal slette - ikke opdatere, så prøv at google efter "on
delete cascade".

Mvh. Michael.

Martin (07-05-2008)
Kommentar
Fra : Martin


Dato : 07-05-08 22:23

Michael Sørensen wrote:
> Hej.
>
> Hvordan er det, at man kan få sin database (Firebird) til automatisk at
> slette tilhørende poster i en undertabel.
>
> Forstået på den måde, at Tabel1 er en vareliste og tabel2 er en liste med
> køb af varer. Når en vare fra varelisten slettes, skal alle tilhørende /
> relaterede køb af denne vare fjernes fra købslisten. Der er relateret via en
> foreign key.
> (Lad være med at spekulere på, at eksemplet har ihensigtsmessigheder idet
> det er et forenklet eksempel)
>
> I IBExpert under den nævnte foreign key er der mulighed for at vælge noget
> "update rule" hvor der kan vælges mellem "no action, Cascade, Set null, Set
> default. Er jeg på rette vej og hvad er forskellen på dem?
>

Et lille hurtigt eksempel

CREATE TABLE Tabel1 (
FIRST_FIELD Varchar(10) NOT NULL COLLATE NONE,
PRIMARY KEY (FIRST_FIELD)
);

CREATE TABLE tabel2 (
FIRST_FIELD Varchar(10) NOT NULL COLLATE NONE,
SECOND_FIELD Varchar(10) NOT NULL COLLATE NONE,
PRIMARY KEY (FIRST_FIELD,SECOND_FIELD)
);

Først laver vi lige de 2 tabeller - så laver vi det "magiske øjeblik"

ALTER TABLE Tabel1
ADD CONSTRAINT FK_Tabel1_1
FOREIGN KEY (FIRST_FIELD) REFERENCES tabel2 (FIRST_FIELD)
ON DELETE CASCADE;

Ukendt (08-05-2008)
Kommentar
Fra : Ukendt


Dato : 08-05-08 14:19

"Martin" <martin@aarhof.invalid> skrev i en meddelelse
news:48221db1$0$90262$14726298@news.sunsite.dk...
> Michael Sørensen wrote:
>> Hej.
>>
>> Hvordan er det, at man kan få sin database (Firebird) til automatisk at
>> slette tilhørende poster i en undertabel.
>>
>> Forstået på den måde, at Tabel1 er en vareliste og tabel2 er en liste med
>> køb af varer. Når en vare fra varelisten slettes, skal alle tilhørende /
>> relaterede køb af denne vare fjernes fra købslisten. Der er relateret via
>> en foreign key.
>> (Lad være med at spekulere på, at eksemplet har ihensigtsmessigheder idet
>> det er et forenklet eksempel)
>>
>> I IBExpert under den nævnte foreign key er der mulighed for at vælge
>> noget "update rule" hvor der kan vælges mellem "no action, Cascade, Set
>> null, Set default. Er jeg på rette vej og hvad er forskellen på dem?
>
> Et lille hurtigt eksempel
>
> CREATE TABLE Tabel1 (
> FIRST_FIELD Varchar(10) NOT NULL COLLATE NONE,
> PRIMARY KEY (FIRST_FIELD)
> );
>
> CREATE TABLE tabel2 (
> FIRST_FIELD Varchar(10) NOT NULL COLLATE NONE,
> SECOND_FIELD Varchar(10) NOT NULL COLLATE NONE,
> PRIMARY KEY (FIRST_FIELD,SECOND_FIELD)
> );
>
> Først laver vi lige de 2 tabeller - så laver vi det "magiske øjeblik"
>
> ALTER TABLE Tabel1
> ADD CONSTRAINT FK_Tabel1_1
> FOREIGN KEY (FIRST_FIELD) REFERENCES tabel2 (FIRST_FIELD)
> ON DELETE CASCADE;

Tak.

Det var en hjælp, jeg kunne bruge.



Søg
Reklame
Statistik
Spørgsmål : 177578
Tips : 31968
Nyheder : 719565
Indlæg : 6409072
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste