Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 不使用update语句更新表_Sql - Fatal编程技术网

Sql 不使用update语句更新表

Sql 不使用update语句更新表,sql,Sql,有人能告诉我们如何在不使用update语句的情况下更新表中的一些记录吗。可以使用select语句 如果没有update语句,我认为您无法更新表。使用select语句是不可能的 您可以删除一行并插入同一行+您的更改,这在许多方面与更新类似,但会给外键带来很多麻烦 哦,你的DBA可能会杀了你。这取决于你在使用什么工具以及你真正想要实现什么 有些库允许您更新从select语句获得的数据。(例如,ORM就像NHibernate,我认为ADO.NET也是)。这些库正在为您编写更新语句 当您只执行sele

有人能告诉我们如何在不使用update语句的情况下更新表中的一些记录吗。可以使用select语句

如果没有update语句,我认为您无法更新表。

使用select语句是不可能的

您可以删除一行并插入同一行+您的更改,这在许多方面与更新类似,但会给外键带来很多麻烦


哦,你的DBA可能会杀了你。

这取决于你在使用什么工具以及你真正想要实现什么

  • 有些库允许您更新从select语句获得的数据。(例如,ORM就像NHibernate,我认为ADO.NET也是)。这些库正在为您编写更新语句
  • 当您只执行select语句时,可以使用更改数据的函数或触发器。在这些函数或触发器中,仍然有一个update语句
  • 出于安全原因,您必须确保没有人向select语句中注入update语句。因此,仅执行select语句并不仅仅是保存
如何更新表的某些记录 不使用update语句

使用语句

可以使用select语句


从逻辑上讲,更新是删除和插入:
insert-INTO..SELECT
到暂存表,根据需要修改数据,然后
delete
然后
insert-INTO..SELECT
从暂存表中选择。

当模块运行它创建的SELECT语句时,您可能会问这是怎么发生的,然后,您需要了解SQL注入。如果没有某种类型的更新语句(不仅包括更新,还包括删除然后插入或使用合并),则无法执行更新,并且用户必须对表具有更新权限,但是如果没有正确地对select语句进行参数化以避免SQL注入,则可以将更新添加到动态创建的select语句中

您可以使用

REPLACE INTO tablename(primary key, ...{rest of the columns in the table}) 
VALUES(the same primary key, new values );

这将删除上一行并插入具有相同主键和更新列值的新行。不太值得,但也许还有其他方法。

不,SELECT语句不可能实现。这听起来好像有人没有更新权限,但仍然想更新。如果是这样的话,我会解决权限问题。通常数据库权限是为select、update或delete授予的,因为每个权限对表都有非常特定的影响。任何数据库都不太可能允许SELECT语句进行底层更改,除非下面有一个触发器或存储过程,该触发器或存储过程已由系统管理员设置为具有辅助效果。多么奇怪的答案,如何使用SELECT删除和插入?我还没有说它是SELECT!?我的第一句话否定了OP第二句中的陈述。我的第二句回答了OP第一句中的问题