我可以添加一个列吗?我指定为NOT NULL,我不想指定默认值,但MS-SQL 2005表示:

ALTER TABLE只允许添加可以包含NULL的列,或指定了默认定义的列,或添加的列是标识或时间戳列,或者如果前面的条件都不满足,则表必须为空才能添加此列.无法将列"test"添加到非空表"shiplist",因为它不满足这些条件.

如果是,请告诉我语法,如果不是,请说明原因.

推荐答案

不,你不能.

因为如果可以的话,SQL不知道在已经存在的记录中把什么作为值.如果表中没有任何记录,它将不会出现问题.

最简单的方法是使用默认值创建列,然后删除默认值.

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

另一种 Select 是添加不带约束的列,填充所有单元格的值并添加约束.

Sql相关问答推荐

为什么postgres中CURRENT_TIMESTAMP的日期与CURRENT_DATE不同?

如何退回当年的所有参赛作品?""

更新在两个或多个面中具有交点的面

如何在snowflake中进行SQL的反向填充

最近3个月收到的邮箱总数

如何在SQL Server中统计按备注分组的记录数

重用传递给 node 的参数-postgres upsert查询

了解多个分组集

WooCommerce产品的SQL查询:获取sku和产品标签

通过UPDATE SELECT更新表时出现问题

如何修复初学者 SQL INNER JOIN 查询错误

我可以在 T-SQL (SQL Server) 的函数内使用 OPTION 子句吗?

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

JSON对象查询SQL服务器

在给定的日期范围内填写缺失的日期

插入行时的行安全策略问题

Postgresql 需要一个查询,为我提供所有没有具有特定状态值的子元素的父母

强制 SQL 始终通过 R 从视图中返回至少一行

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84