Isso não está funcionando no SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
O erro é:
Sintaxe incorreta perto da palavra-chave 'SET'.
O que estou fazendo errado?
Isso não está funcionando no SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
O erro é:
Sintaxe incorreta perto da palavra-chave 'SET'.
O que estou fazendo errado?
Respostas:
Isso funcionará no SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
não pode usar alterar coluna para isso, use add em vez disso
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
A maneira correta de fazer isso é a seguinte:
Execute o comando:
sp_help [table name]
Copie o nome do CONSTRAINT
.
Solte o DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Execute o comando abaixo:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
A solução do Hoodaticus foi perfeita, obrigado, mas eu também precisava que fosse executável novamente e encontrei este caminho para verificar se havia sido feito ...
IF EXISTS(SELECT * FROM information_schema.columns
WHERE table_name='myTable' AND column_name='myColumn'
AND Table_schema='myDBO' AND column_default IS NULL)
BEGIN
ALTER TABLE [myDBO].[myTable] ADD DEFAULT 0 FOR [myColumn] --Hoodaticus
END
Há dois cenários em que o valor padrão de uma coluna pode ser alterado,
Inquerir
create table table_name
(
column_name datatype default 'any default value'
);
Nesse caso, meu servidor SQL não permite modificar o valor da restrição padrão existente. Portanto, para alterar o valor padrão, precisamos excluir a restrição padrão gerada pelo sistema existente ou gerada pelo usuário. E depois desse valor padrão pode ser definido para uma coluna específica.
Siga alguns passos:
Execute este procedimento de banco de dados do sistema, use o nome da tabela como parâmetro. Ele retorna a lista de todas as restrições para todas as colunas na tabela.
execute [dbo].[sp_helpconstraint] 'table_name'
Sintaxe:
alter table 'table_name' drop constraint 'constraint_name'
Sintaxe:
alter table 'table_name' add default 'default_value' for 'column_name'
Felicidades @!!!
caso já exista uma restrição com seu nome padrão:
-- Drop existing default constraint on Employee.CityBorn
DECLARE @default_name varchar(256);
SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID('Employee') AND COL_NAME(parent_object_id, parent_column_id)='CityBorn';
EXEC('ALTER TABLE Employee DROP CONSTRAINT ' + @default_name);
-- Add default constraint on Employee.CityBorn
ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT 'SANDNES' FOR CityBorn;
Você pode usar a seguinte sintaxe: Para obter mais informações, consulte esta pergunta e respostas: Adicione uma coluna com um valor padrão a uma tabela existente no SQL Server
Sintaxe:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Exemplo:
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Outra maneira:
Clique com o botão direito do mouse na tabela e clique em Design, depois clique na coluna que deseja definir o valor padrão.
Em seguida, na parte inferior da página, adicione um valor ou ligação padrão: algo como '1' para string ou 1 para int.
Acabei de encontrar 3 etapas simples para alterar a coluna já existente que era nula antes
update orders
set BasicHours=0 where BasicHours is null
alter table orders
add default(0) for BasicHours
alter table orders
alter column CleanBasicHours decimal(7,2) not null
Restrições da primeira gota
https://stackoverflow.com/a/49393045/2547164
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
WHERE NAME = N'__ColumnName__'
AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
Segundo criar valor padrão
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Tente seguir o comando;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Como a resposta de Yuck com uma verificação para permitir que o script seja executado mais de uma vez sem erros. (menos strings de código / customizadas do que usando information_schema.columns)
IF object_id('DF_SomeName', 'D') IS NULL BEGIN
Print 'Creating Constraint DF_SomeName'
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END