Announcement

Collapse
No announcement yet.

Constraint löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Constraint löschen

    Hallo,

    möchte unter MSSQL 2000 in einer Tabelle eine Spalte löschen.
    Dummerweise hat die Datenbank für die entsprechende Spalte einen Constraint angelegt.

    [aktiv] [tinyint] NOT NULL CONSTRAINT [DF__TabellenName__aktiv__1A34DF26] DEFAULT (1)


    so das ich erst den Constraint löschen muss, bevor ich die Spalte lösche.

    Da der Constraint Name von DB zu DB verschieden ist benötige ich ein Script, das mir den Constraint Namen ermittelt und ich diesen dann verwenden kann den Constraint zu löschen b.z.w. danach die Spalte zu löschen.

    Kann mir jemand ein Tipp geben wie ich ein solches Script erstellen kann?

    Noch eine Frage: Warum legt die DB ungefragt ein solchen Constraint an?


    Viele Grüße und Danke im voraus.

    Norbert

  • #2
    Originally posted by Norbert_ View Post

    Noch eine Frage: Warum legt die DB ungefragt ein solchen Constraint an?
    ungefragt hat die DB das nicht gemacht.
    Beim Anlegen der Spalte aktiv hat wohl wer das DEFAULT (1) angegeben.
    Wenn man nun beim Anlegen u. a. von DEFAULTs diese nicht benennt, dann wid bei jedem Erstellen ein solch eindeutiger Name erzeugt.

    Comment


    • #3
      script zum löschen des Constrint

      Hallo,

      konnte es nach viel Googlen selbst lösen. Hier das Script das ich verwende.

      declare @DefaultName varchar(400)
      declare @sql varchar(400)
      SET @sql = 'Alter Table <TabellenName> drop constraint '

      set @DefaultName =(
      select object_name(cdefault) as 'DefaultName' from syscolumns
      where [id] = object_id('<TabellenName')
      and [name] = 'TabellenSpalte')

      SET @sql = @sql + @DefaultName
      exec(@sql)

      Comment

      Working...
      X