Domanda

In SQL Server, ho una nuova colonna in una tabella:

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL

Questo non perché io non specifica NULL senza specificare un vincolo di default. La tabella non dovrebbe avere un vincolo di default.

Per aggirare il problema, ho potuto creare la tabella con il vincolo di default e poi rimuoverlo.

Tuttavia, ci non sembra essere un modo per specificare che il vincolo di default dovrebbe essere chiamato come parte di questa affermazione, quindi il mio unico modo per sbarazzarsi di esso è di avere una stored procedure che guarda in su nel sys.default_constraints tavolo.

Questo è un po 'disordinato / verbose per un'operazione che è probabile che accada molto. Qualcuno ha qualche soluzioni migliori per questo?

È stato utile?

Soluzione

Questo dovrebbe funzionare:

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL

Altri suggerimenti

ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL
        CONSTRAINT DF_defaultvalue DEFAULT (1)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top