是否在SQL语句中按顺序处理更新的字段

时间:2017-03-14 17:14:07

标签: sql database

如果我想将数据从一个字段移动到同一记录中的另一个字段,然后从现有字段中删除数据,这可以在一个SQL语句中可靠地完成,这是否依赖于数据库提供程序?

我正在考虑的SQL的一个例子是

UPDATE table SET field2 = field1, field1 = '' WHERE keyField = 1

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

是的,它是可靠的,因为主要的数据库,如Oracle,SQL Server,MySQL等都是事务性的,这确保了ACID。换句话说,它是一个全有或全无的场景,所有更改都会发生或不发生(例如,如果事务被回滚)。

然而,它不是顺序的;即这样做会产生相同的结果:

UPDATE table SET field1 = '', field2 = field1 WHERE keyField = 1

相反,你的SQL正在做这样的事情:

UPDATE table 
SET field2_NewValue = field1_OriginalValue
,   field1_NewValue = ''
WHERE keyField = 1