Sql 用WHERE子句检查表字段是否安全?
我有这样的想法:Sql 用WHERE子句检查表字段是否安全?,sql,Sql,我有这样的想法: UPDATE [MyTable] SET [SomeField] = 1 WHERE [SomeField] is NULL 它会工作吗?还是像在迭代集合时修改集合一样 或者写些这样的东西 UPDATE [MyTable] SET [SomeField] = 1 WHERE [ID] IN (SELECT [ID] FROM [MyTable] WHERE [SomeField] is NULL) 对。update
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [SomeField] is NULL
它会工作吗?还是像在迭代集合时修改集合一样
或者写些这样的东西
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [ID] IN (SELECT [ID]
FROM [MyTable]
WHERE [SomeField] is NULL)
对。update操作将只发生在与WHERE子句匹配的表行上
将其视为WHERE子句正在选择行,然后是SET子句更新这些选定行。为了清楚起见,您只需要执行以下操作
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [SomeField] is NULL
由于where子句仅用于缩小应用更新的范围
听起来您是从开发背景进入SQL的,所以您可能会发现一条有用的建议是在事务中尝试您的操作。这样,您就可以撤消所犯的任何错误,并优化正在处理的sql
利用这次跑步
BEGIN TRAN
在执行要测试的命令之前
ROLLBACK TRAN
撤销它,或
COMMIT TRAN
使之永久化