Announcement

Collapse
No announcement yet.

Foreign Key per SQL Script

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Foreign Key per SQL Script

    Hallo,<br>
    ich versuche, eine Datenbank per Script anzulegen.<br>
    Dabei bin ich auf folgendes Problem gestoßen.<br>

    Create Table Master<br>
    (Id integer not null, name char(20));<br>
    Create Unique Index Idx_Master_Id on Master(Id);<br>
    commit;<br><br>
    Create Table Slave<br>
    (Id integer not null,<br>
    MasterId integer not null,<br>
    name char(20));<br>
    Create Unique Index Idx_Slave_Id on Slave(Id);<br>
    Commit;<br><br>
    alter table Slave<br>
    add constraint FK_Slave_MasterId<br>
    foreign key (MasterIdId)<br>
    references Master(ID)<br>
    on delete CASCADE;<br>
    <br>
    soweit so gut. Das Dumme ist, es kommt beim Foreign Key eine Fehlermeldung.
    <br>Name of Referential Constraint not defined in constraints table.<br>
    wenn ich die Master-Tabelle mit primary key(id) erzeuge, klappt das foreign key statement aber.<br>
    enn ich den Foreign key mit ibexpert erzeuge im nachhinein, geht es auch!<br>
    was ist denn hier falsch ???<br><br>
    Das Script erzeugt die Datenbank übrigens auch und wird über wisql ausgeführt (das ist meiens Erachtens noch der beste Script-Ausführer).<br><br>
    Danke Heiko

  • #2
    Hi,
    <br>
    <br>ich würde da ein paar Sachen anders machen:
    <br>Tabellen Scripte:
    <pre>
    drop Table Master;
    Create Table Master
    (
    Id integer not null,
    name char(20) ,
    CONSTRAINT Master_ID PRIMARY KEY (Id)
    );
    commit;
    Drop Table Slave;
    Create Table Slave
    (
    Id integer not null,
    MasterId integer not null,
    name char(20) ,
    CONSTRAINT Slave_ID PRIMARY KEY (Id)
    );
    Commit;
    alter table Slave
    add constraint FK_Slave_MasterId
    foreign key (MasterId)
    references Master(ID)
    on delete CASCADE;
    Commit;
    </pre>
    <br>
    <br>Noch besser wäre es wenn man bei den Char Feldern Collate De_De einbaut damit man beim Sortieren keinen Stress bekommt.
    <br>Mehr dazu in:
    <br>http://www.entwickler.com\itr/buecher/show.php3?id=14&nodeid=92&ps_lo=30
    <br>Interbase Datenbankentwicklung mit Delphi
    <br>ISBN:3-935042-09-4
    <br>
    <br>mfg
    <br>P

    Comment


    • #3
      Hallo Patrick,<br>
      danke für den Tip.<br>
      Das Buch hab ich ja da.<br>
      Das Script war nicht das Originalscript, es sollte ja einfach gehalten werden .<br><br>
      Heik

      Comment


      • #4
        Hallo Heiko,<br><br>
        warum verwendest Du nicht immer einen PRIMARY KEY anstatt des UNIQUE Index, wenn es dann funktioniert ;-)? Übrigens, Dein obiges Script kann sicher nicht ausgeführt werden, weil Du in der FOREIGN KEY Definition eine Spalte MasterIdId verwendest, die in der Tabelle SLAVE gar nicht existiert.<br><br>
        Gruss,<br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment

        Working...
        X