sql-server - 用于将 SQL Server 中的表字段从 NULL 更新为非 NULL 的更新脚本

标签 sql-server tsql

我在 SQL Server 数据库的表中有一个字段(例如 foo),最初定义为可为空,但新要求表明该字段必须为非空。

通过更新脚本将此字段更新为非空而不删除表内容的最佳方法是什么?我尝试从设计 View 生成脚本,但在执行过程中失败,因为表的当前内容具有 foo 的 NULL 值。更糟糕的是,如果我忽略这个错误,它会继续删除表中的所有内容!

最佳答案

在将其更改为 NOT NULL 之前,您必须为支持 NULL 的列中带有 NULL 的任何行设置一个值。

-- Clean up the data which won't comply with the schema changes
UPDATE t SET foo = 0 WHERE foo IS NULL

-- Apply the NOT NULL
ALTER TABLE t ALTER COLUMN foo int NOT NULL

-- Add a default for the future if that's what you want
ALTER TABLE t ADD CONSTRAINT t_foo_def DEFAULT 0 FOR foo

关于sql-server - 用于将 SQL Server 中的表字段从 NULL 更新为非 NULL 的更新脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297205/

相关文章:

c# - 如何检查唯一键约束

java - JTDS (Java/MSSQL) - 找不到存储过程

mysql导入继续在以前的数据库中?

sql-server - 链接的 SQL Server 和更新 Varchar(MAX) 被截断

c# - 将非常小的 double 转换为 SQL float 时出现问题

sql-server - 编译为 t-sql 的语言

sql-server - 嵌套循环(内部连接)成本为 83%。有没有办法以某种方式重写它?

sql - SQL Server 中的 IF 条件

tsql - 如何跳过在 HIVE 命令行中显示结果?

xml - 挑战 - 将 XML 处理成 T-SQL 表结构?