inspiration-is-gone
Goto Top

Oracle 10g Constraint Problem

Hallo zusammen!

Habe ein kleines Problem auf einer Oracle 10g Datenbank, hoffe mir kann hier jemand weiterhelfen oder einen Tipp geben.

Eine Tabelle "TAB" besteht aus 6 Feldern, wobei die ersten 4 Felder den Primärschlüssel (PK) ausmachen:
"DOCID" (PK), "MANDANT" (PK), "OBJEKT" (PK), "NORMKEY" (PK), "TEXTFELD" und "TABPHYSSEQ".

Hole ich mir jetzt aus dieser Tabelle alle Einträge für Mandant 1 heraus und möchte diese wieder mit Mandant=3 wegschreiben, erhalte ich die Fehlermeldung:
"Unique Constraint 'TAB2PHYSSEQ' verletzt".

Das SQL hierzu ist sehr überschaubar:
insert into TAB ( "DOCID", "MANDANT, "OBJEKT", "NORMKEY", "TEXTFELD", "TABPHYSSEQ")
select "DOCID", 3 as "MANDANT", "OBJEKT", "NORMKEY", "TEXTFELD", "TABPHYSSEQ"
where "MANDANT" = 1;

Die Rahmenbedingungen:
- Für Mandant 3 gibt es bislang noch keinen Eintrag
- In der Ergebnismenge gibt es keinen einzigen doppelten Wert, der Primärschlüssel ist definitiv nicht verletzt
- Ein Fremdschlüssel auf diese Tabelle scheint nicht vorhanden zu sein
- Auch wenn die Abfrage auf die ersten 4 Felder beschränkt wird, kommt diese Meldung
- Eine Constraint 'TAB2PHYSSEQ' ist zu dieser Tabelle nicht angelegt, auch solches Feld gibt es in der Tabelle nicht

Danke & Gruß,
Nils

Content-ID: 119301

Url: https://administrator.de/contentid/119301

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

inspiration-is-gone
inspiration-is-gone 29.06.2009 um 12:56:13 Uhr
Goto Top
Ok, habe es vorläufig gelöst. Auf das Feld TABPHYSSEQ war eine Unique Constraint gelegt (obwohl ich die nirgends angezeigt bekommen habe). Kann mir jemand sagen, ob evtl von Oracle selbst solche Constraints vergeben werden und wo man diese dann ggf findet?
Biber
Biber 29.06.2009 um 13:03:04 Uhr
Goto Top
Moin inspiration_is_gone,

a) fehlt in Deinem SQL nicht auch noch die FROM-Klausel?
b) Constraints bekommst Du in der View USERS_CONSTRAINTS angezeigt.
SELECT * FROM USER_CONSTRAINTS 
WHERE table_name ='DEINETABELLE';  

Grüße
Biber
inspiration-is-gone
inspiration-is-gone 29.06.2009 um 13:19:57 Uhr
Goto Top
Hi Biber,

ja hast Recht, die From-Klausel habe ich in dem Beispiel mal grosszügigerweise übergangen *hüstel

Interessanterweise gibt es keine Eintragungen in der USER_CONSTRAINTS Tabelle zu entsprechender Tabelle, aber Danke für den Tip!

Gruß
27234
27234 29.06.2009 um 15:06:54 Uhr
Goto Top
Hallo,

wie bekomme ich Constraints, Indizes, Tabellen, etc. angezeigt?

1. Enterprise Manager Console
oder
2. DBConsole
oder
3. SQL-Developer
oder
4. aus den DBA-/Userviews (wie Biber schon bemerkte)

Ein Index auf eine Tabelle (unique oder auch nicht) muss nicht immer ein Constraint sein, also auch mal "DBA(USER)(ALL)_INDEXES" schauen.

Gruß René
inspiration-is-gone
inspiration-is-gone 29.06.2009 um 15:40:37 Uhr
Goto Top
Hallo Bolle,

das wars, das war ein Index und kein Constraint. Habe mal in All_Indexes nachgeschaut und wurde fündig. Danke für den Tipp! ;)

Gruß,
Nils