Entwickler-Ecke
Datenbanken - 2. Primary Key im nachhinein einfügen
OlliWausD - Di 01.02.05 11:28
Titel: 2. Primary Key im nachhinein einfügen
hi Jungs,
ich habe eine Tabelle, in der schon ein Primary Key (ean) vorhanden ist.
Das Programm-Modul soll jetzt erweitert werden, so dass zu diesem Primary Key mehrere DS angelegt werden können.
Hierzu benötige ich einen 2. Primary Key (Nr)
DS1 wäre dann EAN-Text1 0
DS2 wäre dann EAN-Text1 1
...
Also:
Quelltext
1: 2:
| ALTER TABLE ABCTabelle ADD nr INTEGER NOT NULL UPDATE TABLE ABCTabelle Set Nr = 0 |
--> Funktioniert einwandfrei, jedoch
Quelltext
1:
| ALTER TABLE ABCTabelle ADD PRIMARY KEY (ean,Nr) |
--> Das funktioniert leider nicht !!! Im IB-Expert bekomme ich die Fehlermeldung:
Zitat: |
This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$RELATION_CONSTRAINTS failed.
action cancelled by trigger (3) to preserve data integrity.
Attempt to define a second PRIMARY KEY for the same table.
|
es gibt vom DB-System angelegte Trigger beide beinhalten
Zitat: |
Check ABCTabelle.FeldA |
jodoch sind diejenigen Trigger5 und Trigger17 !
Wie finde ich Trigger 3 ???
mfg
OlliW
Udontknow - Di 01.02.05 11:35
Hallo!
Dein Problem ist eigentlich recht einfach:
Quelltext
1:
| Attempt to define a second PRIMARY KEY for the same table. |
Übersetzt: Versuch, einen zweiten Primärschlüssel für dieselbe Tabelle anzulegen. Soetwas geht einfach nicht, es kann immer nur einen Primärschlüssel geben, alles andere wäre unsinnig.
Du musst zuerst den alten Primärschlüssel entfernen, und dann den neuen, der über zwei Felder gehen soll, definieren.
Cu,
Udontknow
jasocul - Di 01.02.05 11:40
Ergänzend zu Udontknow:
Statt eines zweiten Primary Key (was von der Bezeichnung schon keinen Sinn macht), wird dir vermutlich ein Unique Key ausreichen.
Udontknow - Di 01.02.05 12:01
Also, ich habe ihn so verstanden, daß er einen mehrteiligen Primärschlüssel haben will:
Zitat: |
Das Programm-Modul soll jetzt erweitert werden, so dass zu diesem Primary Key mehrere DS angelegt werden können. |
Bei einem weiteren Unique Index wäre das ja so nicht möglich...
Cu,
Udontknow
OlliWausD - Di 01.02.05 12:06
Der Primärschlüssel sollen quasi beide Felder sein. Wie bei einer n:m-Tabelle
Das mit dem Löschen und neu erstellen hab ich mir auch schon überlegt. Will das aber nicht unbedingt!
Aber noch mal zurück zu dem Trigger.
Wieso bringt er dann die Fehlermeldung mit dem Trigger??
mfg
OlliW
EDIT: Zefix, wie lösch ich denn wieder nen Primary Key???
ALTER TABLE ABCTabelle DROP PRIMARY KEY funktioniert nicht. Beim Primary sagt er Syntaxfehler !
Ich glaub, ich bin heut noch nicht ganz wach
mfg die 2.
Olliw
Udontknow - Di 01.02.05 12:48
Weiss jetzt gerade nicht die genaue Syntax, aber mach es doch einfach über den IB-Expert.
PS: Hiess es nicht alter table *tabelle* drop constraint *Name des Primärschlüssels*?
Cu,
Udontknow
OlliWausD - Di 01.02.05 13:03
ahh ja genau, das constraint vergessen :roll:
funkioniert
Thx
mfg
OlliW
jasocul - Di 01.02.05 13:18
Udontknow hat folgendes geschrieben: |
Also, ich habe ihn so verstanden, daß er einen mehrteiligen Primärschlüssel haben will:
Zitat: | Das Programm-Modul soll jetzt erweitert werden, so dass zu diesem Primary Key mehrere DS angelegt werden können. | Bei einem weiteren Unique Index wäre das ja so nicht möglich... |
Sorry. Muss ich irgendwie überlesen haben.
OlliWausD - Di 01.02.05 14:16
jo, kein Thema jasocul
is mir ja auch schon passiert :wink:
mfg
Ranger Kirby
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!