Jaqueson Geschrieben 24. April 2006 Teilen Geschrieben 24. April 2006 Hi, ich hab mit folgendem Befehl: CREATE TABLE test( NR INTEGER PRIMARY KEY, XYZ INTEGER REFERENCES test2(vct) ) eine Tabelle erstellt. Jetzt möchte ich die REFERENCE gerne wieder auflösen. Wie kann ich das machen? Mit dem ALTER Befehl kann ich da den Datentyp ändern (usw...). Ich weiß nur nicht wie ich die Reference entfernen kann... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sigi Geschrieben 24. April 2006 Teilen Geschrieben 24. April 2006 Welche Datenbank überhaupt? Mysql Oracle db2...? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaqueson Geschrieben 24. April 2006 Autor Teilen Geschrieben 24. April 2006 es handelt sich um eine Oracle DB Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 24. April 2006 Teilen Geschrieben 24. April 2006 *mal in meine oracle reinhack* CREATE TABLE test2( VCT INTEGER PRIMARY KEY, XYZ INTEGER ) CREATE TABLE test3( NR INTEGER PRIMARY KEY, XYZ INTEGER REFERENCES test2(vct) ) select table_name, constraint_name, column_name, position from DBA_CONS_COLUMNS where owner = '<dein_owner>' and table_name = 'TEST3' and position is not null order by constraint_name, position ALTER TABLE test3 drop CONSTRAINT SYS_C0037775 alles klar? bei weiteren fragen, oder falls was unklar sein sollte, fragen <exkurs>ach ja, REFERENCES erstellt fremdschüssel nach eigenem benamsungsschema, das heisst, foreign key constraints werden meist SYS_laufendenummer benannt. vorzugsweise sollte man mit ALTER TABLE ... ADD CONSTRAINT arbeiten. schönes beispiel sind automatisch ablaufende setup-scripte, die auf mehreren db-instanzen auch andere SYS_...-namen vergeben bekommen, was bei erneuetem DROP dann probleme mit sich bringt.</exkurs> s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 24. April 2006 Teilen Geschrieben 24. April 2006 <exkurs>ach ja, REFERENCES erstellt fremdschüssel nach eigenem benamsungsschema, das heisst, foreign key constraints werden meist SYS_laufendenummer benannt. vorzugsweise sollte man mit ALTER TABLE ... ADD CONSTRAINT arbeiten. schönes beispiel sind automatisch ablaufende setup-scripte, die auf mehreren db-instanzen auch andere SYS_...-namen vergeben bekommen, was bei erneuetem DROP dann probleme mit sich bringt.</exkurs> table-constraints müssen nicht unbeding sein, in diesem fall kann man auch den column constraint mit namen anlegen: CREATE TABLE test3( NR INTEGER PRIMARY KEY, XYZ INTEGER constraint fk1 REFERENCES test2(vct) ) aber ansonsten stimme ich dir vollkommen zu, constraints sollten _immer_ mit namen angelegt werden. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaqueson Geschrieben 25. April 2006 Autor Teilen Geschrieben 25. April 2006 Wenn ich den Befehl ausführe select table_name, constraint_name, column_name, position from DBA_CONS_COLUMNS where owner = '<dein_owner>' and table_name = 'TEST3' and position is not null order by constraint_name, position; kommt folgender Fehler: from DBA_CONS_COLUMNS * FEHLER in Zeile 2: ORA-00942: Tabelle oder View nicht vorhanden Sry, bin aber leider absoluter noob... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 25. April 2006 Teilen Geschrieben 25. April 2006 Das liegt daran, dass der Benutzer, mit dem du das Statement aufrufst, keine DBA-Berechtigungen hat, und somit nicht auf die DBA_CONS_COLUMNS zugreifen darf. GRANT DBA TO [benutzer] schafft Abhilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 25. April 2006 Teilen Geschrieben 25. April 2006 offensichtlich hast du keine Rechte auf die tabelle DBA_CONS_COLUMNS. Entweder zu gibst dir Rechte darauf oder du fragst stattdessen die Tabelle ALL_CONS_COLUMNS ab... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 25. April 2006 Teilen Geschrieben 25. April 2006 GRANT DBA TO [benutzer] schafft Abhilfe. man muss es ja nicht gleich übertreiben. 'grant select_catalog_role' statt 'grant dba' tut es auch. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 25. April 2006 Teilen Geschrieben 25. April 2006 offensichtlich hast du keine Rechte auf die tabelle DBA_CONS_COLUMNS. Entweder zu gibst dir Rechte darauf oder du fragst stattdessen die Tabelle ALL_CONS_COLUMNS ab... ich würde USER_CONS_COLUMNS abfragen, da er ja als der Schemaowner angemeldet ist. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaqueson Geschrieben 26. April 2006 Autor Teilen Geschrieben 26. April 2006 OK, thx. Ich werde es jetzt mal probieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.