可以在SQL Server中选择语句更新数据吗?

时间:2013-12-10 18:28:55

标签: sql sql-server tsql

我刚接手了数百个SQL视图,存储过程和函数 我喜欢直观地看数据,以便更好地理解对象的作用。

我可以假设我运行一个select语句并执行查询 - 它不可能修改记录/数据吗?

我只是担心有些SQL技巧可以通过select语句更新数据。

选择内部需要注意什么?我需要注意的任何提示或关键字?

2 个答案:

答案 0 :(得分:2)

普通的旧SELECT语句本身不会更新任何数据。

即使SELECT语句调用了一个或多个FUNCTION,您也可以放心,这些FUNCTION中没有一个会修改DATABASE中的任何数据} **

**见http://technet.microsoft.com/en-us/library/ms191320.aspx 列出的函数的第一个限制是

  

用户定义的函数不能用于执行修改操作   数据库状态。

我甚至尝试在返回返回值之前编写一个FUNCTION INSERT,我得到的错误如下。 [感谢@Aaron和@John保持诚实]。

Msg 443, Level 16, State 15, Procedure CRUDFunction, Line 5
Invalid use of a side-effecting operator 'INSERT' within a function.

答案 1 :(得分:1)

普通的基本SELECT不会修改数据。但是,有一些事情你应该留意。

如果代码使用动态SQL构建SELECT语句,则必须担心SQL injection攻击。除非您小心参数化动态SQL,否则攻击者可以执行当前登录可以执行的任何操作。例如,DROP TABLEDROP DATABASE等。请参阅维基百科上的链接文章。

此外,请注意具有SELECT子句的INTO可用于创建表并将记录插入其中。有关详细信息,请参阅this questionMicrosoft TechNet