pseumin
Goto Top

Sys-Tabellen werden nach Primärschlüssel-Anderung nicht aktualisiert (MSSQL)

Ich ändere per SQL-Befehl den Primärschlüssel einer Tabelle (z. B. eine Spalte hinzufügen). Das
klapp auch wunderbar, im Management Studio wird der neue Primärschlüssen in der Tabellendefinition auch ganz wunderbar
angezeigt.
ALTER TABLE tabelle DROP CONSTRAINT pkey_name
ALTER TABLE tabelle add CONSTRAINT pkey PRIMARY KEY (Spalte1, Spalte2, Spalte3)
Wenn ich jetzt aber zur Überprüfung wieder die Systemtabellen abfrage, so wird immer noch der alte Schlüssel angezeigt.
select co.name, sc.name from sys.key_constraints co, sys.tables ta, sys.indexes ix, sys.index_columns ic, sys.syscolumns sc
where ta.object_id = co.Parent_object_id 
and ix.object_id = co.Parent_object_id 
and ic.object_id = co.Parent_object_id 
and sc.id = co.Parent_object_id 
and ix.is_primary_key = 1
and ix.index_id = ic.index_id 
and sc.colid = ic.index_column_id
and ta.name = 'tabelle'  

Warum werden die Systemtabellen nicht mit aktualisiert.
Muss ich noch eine Art "Refresh" machen ?

Danke, Pseumin

Content-Key: 93307

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

Printed on: April 19, 2024 at 04:04 o'clock

Member: Logan000
Logan000 Jul 31, 2008 at 13:11:39 (UTC)
Goto Top
Moin moin

Wenn ich jetzt aber zur Überprüfung wieder die Systemtabellen abfrage, so wird immer noch der alte Schlüssel angezeigt.
Das kann ich beim besten willen nicht reproduzieren.

Auf SQL 2k5 Express Advanced kann ich sogar beide SQL Statements in einer Abfrage ausführen und bekomme den neuen Schlüssel angezeigt.

Gruß L.
Member: Pseumin
Pseumin Aug 04, 2008 at 07:29:11 (UTC)
Goto Top
Moin.

Dank deines Hinweises habe ich den Fehler jetzt gefunden.
Statt
and sc.colid = ic.index_column_id 
muss es
and sc.colid = ic.column_id 
heissen.

Gruß, Pseumin