这段代码在 SQL Server 2008 中无法工作:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
出现错误:
关键字'SET'附近的语法不正确。
我做错了什么?
这段代码在 SQL Server 2008 中无法工作:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
出现错误:
关键字'SET'附近的语法不正确。
我做错了什么?
这将适用于SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
无法使用 alter column,应该使用 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服务器不允许修改现有默认约束值。因此,要更改默认值,我们需要删除现有的系统生成或用户生成的默认约束。然后可以为特定列设置默认值。
按照以下步骤操作:
执行此系统数据库过程,它以表名作为参数,并返回表中所有列的所有约束列表。
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'
加油 @!!!
如果已经存在一个具有默认名称的限制:
-- 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;
以下是语法,欲了解更多信息,请参阅此问题和答案:在 SQL Server 中添加具有默认值的列到现有表中
语法:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
例子:
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.
另一种方法:
右键单击表格,然后点击“设计”,接着点击要设置默认值的列。
在页面底部添加一个默认值或绑定:例如字符串的“1”或整数的1。
首先,删除约束。
https://dev59.com/NXM_5IYBdhLWcg3wdzDz#49393045
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]
ALTER TABLE [dbo].[Employee] ADD DEFAULT ('N') FOR [CityBorn]