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