sql >> Databáze >  >> RDS >> Sqlserver

Jak vypustit sloupec s omezením?

Nejprve byste měli zrušit problematické DEFAULT constraint , poté můžete sloupec vypustit

alter table tbloffers drop constraint [ConstraintName]
go

alter table tbloffers drop column checkin

Chyba se však může objevit z jiných důvodů – například uživatelsky definovaná funkce nebo zobrazení s SCHEMABINDING možnost nastavená pro ně.

UPD: Plně automatizovaný skript pro odstranění omezení:

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. rozdíl mezi klauzulí ON a použitím klauzule v sql

  2. Jakou funkci maskování dat bych měl použít?

  3. Sémantika ResultSet#getDate().

  4. Nesprávná syntaxe poblíž ')' volání uložené procedury s GETDATE