如何删除不使用查询的sql服务器中的空约束
ALTER TABLE YourTable ALTER COLUMN YourColumn columnType NULL
只为后人:
我宣布我的专栏名称,像这样:
ALTER TABLE <table_name> ADD <column_name> <datatype> NOT NULL DEFAULT 0
要成功删除<列名>编程,你应该声明你的列如下所示:
ALTER TABLE <table_name> ADD <column_name> <data_type> NOT NULL CONSTRAINT <default_constraint_name> DEFAULT 0
去掉<列名>:
ALTER TABLE <table_name> DROP <default_constraint_name>
ALTER TABLE <table_name> ALTER COLUMN <column_name> <data_type> NULL
ALTER TABLE <table_name> DROP COLUMN <column_name>
问题是关于删除非空约束,而不是删除列。 – Ben 2012-07-12 08:00:27
如果您没有正确删除约束,则可能无法删除该列。 – Amalgovinus 2016-07-22 17:37:44
您应该删除任何约束之前删除NOT NULL列
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'<columnToDelete>'
AND object_id = OBJECT_ID(N'<columnToDelete>'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE <tableNAme> DROP CONSTRAINT ' + @ConstraintName)
IF EXISTS (SELECT * FROM syscolumns WHERE id=object_id('<TableName>') AND name='<columnToDelete>')
EXEC('ALTER TABLE <tableName> DROP COLUMN <columnToDelete>')
这对我的工作!
问题是关于删除约束,而不是列。 – Martin 2015-05-18 11:04:08
删除约束not null
到null
ALTER TABLE 'test' CHANGE COLUMN 'testColumn' 'testColumn' datatype NULL;
为什么这个工作,而不是上述接受的答案为MySQL? – HopeKing 2018-02-13 08:47:17
我发现我已经为包括YourColumn比如类型。 ALTER TABLE YourTable ALTER COLUMN YourColumn int NULL – 2011-06-28 01:16:46
或者你可以这样做:alter table table_name modify column_name type(30)NULL。 30是你的列类型的大小,例如:varchar(30) – Nil 2012-09-19 18:11:28
在postgres:'ALTER TABLE YourTable ALTER COLUMN YourColumn DROP NOT NULL' – Shane 2013-03-20 16:41:05