|
| 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.
| |
|
|