Ich habe eine Spalte mit einer "DEFAULT" Einschränkung. Ich möchte ein Skript erstellen, das diese Spalte löscht.SQL Server 2005-Drop-Spalte mit Einschränkungen
Das Problem ist, dass es diesen Fehler zurückgibt:
Msg 5074, Level 16, State 1, Line 1
The object 'DF__PeriodSce__IsClo__4BCC3ABA' is dependent on column 'IsClosed'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE DROP COLUMN IsClosed failed because one or more objects access this column.
ich nicht einen einfachen Weg finden könnte eine Spalte und alle damit verbundenen Einschränkungen (nur große Skripte zu löschen, schauen Sie in die Systemtabelle gefunden .. Es muss (!!) ein "netter" Weg sein.
Und da der Name der DEFAULT-Einschränkung zufällig generiert wurde, kann ich ihn nicht mit dem Namen löschen.
aktualisieren:
Der Constraint-Typ "STANDARD".
Ich sah die Lösungen, die Sie alle vorgeschlagen, aber ich finde sie alle wirklich "schmutzig" ... Denkst du nicht? Ich weiß nicht, ob es mit Oracle oder MySQL ist, aber es ist möglich, so etwas wie zu tun:
DROP COLUMN xxx CASCADE CONSTRAINTS
Und es fällt alle damit verbundenen Einschränkungen ... Oder zumindest sinkt automatisch die zu dieser Spalte zugeordnet Bedingungen (mindestens CHECK Constraints!)
Gibt es in MSSQL nichts dergleichen?
Ihre Antwort ist richtig, aber sie tut nicht das Gleiche wie meins. Sie erhalten die Einschränkungen von einer bestimmten Tabelle, meine bekommt alle Einschränkungen. Zwei Dinge: Syntaxfehler (entfernen Sie vorher das Komma) und Sie sollten "und dobj.name ist nicht null" in der WHERE-Klausel hinzufügen, um die nicht relevanten Ergebnisse zu entfernen. –
+1, brauchte nur das. –