12 ответов:
Это будет работать в SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
не может использовать alter столбец для этого, используйте add вместо
ALTER TABLE Employee ADD DEFAULT('SANDNES') FOR CityBorn
правильный способ сделать это следующим образом:
выполнить команду:
sp_help [table name]скопируйте имя
CONSTRAINT.падение
DEFAULT CONSTRAINT:ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]выполните команду ниже:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
решение Hoodaticus было идеальным, спасибо, но мне также нужно было его повторно запустить и найти этот способ проверить, было ли это сделано...
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
есть два сценария, где значение по умолчанию для столбца может быть изменено,
- на момент создания таблицы
- изменить существующий столбец в существующую таблицу.
- во время создания таблицы / создания нового столбца.
запрос
create table table_name ( column_name datatype default 'any default value' );
- изменить существующий столбец к существующей таблице
в этом случае мой SQL server не позволяет изменять существующее значение ограничения по умолчанию. Поэтому, чтобы изменить значение по умолчанию, нам нужно удалить существующее системное или пользовательское ограничение по умолчанию. И после этого значение по умолчанию может быть установлено для конкретного столбца.
выполните следующие действия:
- перечислите все существующие ограничения значений по умолчанию для столбцов.
выполните эту процедуру системной базы данных, она принимает имя таблицы в качестве параметра. Он возвращает список всех ограничений для всех столбцов внутри стол.
execute [dbo].[sp_helpconstraint] 'table_name'
- отбросьте существующее ограничение по умолчанию для столбца.
синтаксис:
alter table 'table_name' drop constraint 'constraint_name'
- добавить новое ограничение, значение по умолчанию для этого столбца:
синтаксис:
alter table 'table_name' add default 'default_value' for 'column_name'ура @!!!
просто найдено 3 простых шага, чтобы изменить уже существующий столбец, который был null до
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
попробуйте следующую команду;
ALTER TABLE Person11 ADD CONSTRAINT col_1_def DEFAULT 'This is not NULL' FOR Address
как ответ Юка с проверкой, чтобы позволить скрипту выполняться более одного раза без ошибок. (меньше кода / пользовательских строк, чем при использовании information_schema.колонки)
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
ограничения первого падения
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)Второй создать значение по умолчанию
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
если ограничение уже существует с именем по умолчанию:
-- 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;
Comments