Hallo allemaal,
ik ben bezig met het opzetten van een kleine database waarin ordergegevens bijgehouden kunnen worden. Nu zit ik met het volgende probleem. In een vereenvoudigde versie heb ik drie tabellen.
In tabel "order" zit een foreign key naar de tabel "account" en een foreign key naar de tabel "adres". Wanneer een klant een order plaatst en in bezit is van een account dient de foreign key naar de tabel account ingevuld te worden. Wanneer de klant een john do zonder account is hoeft alleen het adres van deze persoon opgeslagen te worden.
Het probleem wat nu ontstaat dat ofwel de key naar de tabel "account" gelegd moet worden ofwel naar de tabel "adres". Wat ik nu bedacht had was de volgende checks te plaatsen:
De bedoeling is dat mysql het nu niet slikt dat beide kolommen of leeg of een verwijzing hebben hetgeen wat ik dus wil. Alleen mysql returned de volgende foutmelding:
Ik heb eigenlijk niet echt een idee wat er verkeerd is aan dit stukje script.
Iemand een idee hoe dit wel in mysql (versie 3) gemaakt kan worden?
Het totale create table statement wat ik gebruikt heb voor de volledige tabel:
ik ben bezig met het opzetten van een kleine database waarin ordergegevens bijgehouden kunnen worden. Nu zit ik met het volgende probleem. In een vereenvoudigde versie heb ik drie tabellen.
In tabel "order" zit een foreign key naar de tabel "account" en een foreign key naar de tabel "adres". Wanneer een klant een order plaatst en in bezit is van een account dient de foreign key naar de tabel account ingevuld te worden. Wanneer de klant een john do zonder account is hoeft alleen het adres van deze persoon opgeslagen te worden.
Het probleem wat nu ontstaat dat ofwel de key naar de tabel "account" gelegd moet worden ofwel naar de tabel "adres". Wat ik nu bedacht had was de volgende checks te plaatsen:
SQL:
1
2
| CHECK (account_number IS NOT NULL AND address_number IS NOT NULL); CHECK(account_number IS NULL AND address_number IS NUKK); |
De bedoeling is dat mysql het nu niet slikt dat beide kolommen of leeg of een verwijzing hebben hetgeen wat ik dus wil. Alleen mysql returned de volgende foutmelding:
code:
1
| #1064 - You have an error in your SQL syntax near '(account_number IS NOT NULL AND address_number IS NOT NULL), CHECK (account' at line 12 |
Ik heb eigenlijk niet echt een idee wat er verkeerd is aan dit stukje script.
Iemand een idee hoe dit wel in mysql (versie 3) gemaakt kan worden?
Het totale create table statement wat ik gebruikt heb voor de volledige tabel:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| CREATE TABLE tbl_order( order_number INTEGER UNSIGNED NOT NULL AUTO_INCREMENT , send_method_number INTEGER() NOT NULL , STATUS ENUM( 'open', 'verzonden', 'aanbetaling ontvangen', 'afgebroken' ) NOT NULL DEFAULT 'open', account_number INTEGER UNSIGNED, address_number INTEGER UNSIGNED, CONSTRAINT PK_tbl_order PRIMARY KEY ( order_number, send_method_number ) , KEY IDX_tbl_order1( send_method_number ) , UNIQUE KEY IDX_tbl_order2( order_number ) , KEY IDX_tbl_order3( account_number ) , KEY IDX_tbl_order4( address_number ) , CHECK ( account_number IS NOT NULL AND address_number IS NOT NULL ), CHECK ( account_number IS NULL AND account_number IS NULL ) ) |