Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да махна колона с ограничение?

Първо трябва да махнете проблемното DEFAULT constraint , след това можете да пуснете колоната

alter table tbloffers drop constraint [ConstraintName]
go

alter table tbloffers drop column checkin

Но грешката може да се появи по други причини - например дефинирана от потребителя функция или изглед с SCHEMABINDING зададена опция за тях.

UPD: Напълно автоматизиран скрипт за премахване на ограничения:

DECLARE @sql NVARCHAR(MAX)
WHILE 1=1
BEGIN
    SELECT TOP 1 @sql = N'alter table tbloffers drop constraint ['+dc.NAME+N']'
    from sys.default_constraints dc
    JOIN sys.columns c
        ON c.default_object_id = dc.object_id
    WHERE 
        dc.parent_object_id = OBJECT_ID('tbloffers')
    AND c.name = N'checkin'
    IF @@ROWCOUNT = 0 BREAK
    EXEC (@sql)
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранената процедура или функция очаква параметър, който не е предоставен

  2. Преглеждайте историята на заданията на агент на SQL Server с Azure Data Studio

  3. SQL Server:Полезни съвети за начинаещи

  4. Защо прехвърлянето от float към varchar се закръгля в SQL Server?

  5. Как да вмъкна запис само със стойности по подразбиране?