Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用WHERE子句检查表字段是否安全?_Sql - Fatal编程技术网

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
使之永久化