我想对一个生产数据库运行一个更新查询,作为一个优秀的小开发人员,我正试图使它尽可能安全。我希望做到以下几点
BEGIN TRANSACTION
UPDATE table_x SET col_y = 'some_value'
.
.
.
IF (@@error <> 0)
BEGIN
ROLLBACK
END
ELSE
BEGIN
COMMIT
END
上面的代码应该可以在SQL Server中运行,但我需要在MySQL数据库中使用它。
EDIT:对不起,有多条语句要执行。是的,我知道不需要在一个事务中包装单个查询。
我已经实现了一个类,在这个类中,我需要将一些数据插入到数据库中,但是如果出了问题,插入必须回滚。一旦执行了insert,我就抛出一个异常来测试回滚,但是一旦我检查了数据库,就会插入行,这意味着回滚永远不会发生。
import org.springframework.transaction.annotation.Transactional;
public class SomeClass{
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void insertToDb(
假设在PostgreSQL中有表,如下所示:
CREATE TABLE A
(
userid integer,
productid integer,
description citext,
price numeric
)
还有一些触发因素:
CREATE TRIGGER afterinsert
AFTER INSERT
ON A
FOR EACH ROW
EXECUTE PROCEDURE DoSomething1();
CREATE TRIGGER beforeinsert
BEFORE INSERT
ON A
FOR EACH ROW
EX
假设我们在扭动JOOQ查询时有以下场景:
insertInto(TABLE)
.set(TABLE.NAME, "...")
.set(TABLE.FK, null) -- breaks FK constraint!
//...
.execute();
和:
transactional(configuration -> {
insertInto(TABLE)
// list of sets that are OK
.execute();
throw new RuntimeException();
}
以下是下列声明:
在数据库中执
我将为初始化数据库的许多insert语句实现事务。我理解事务将允许我们将更改提交到数据库,从而保存它。或者,如果其中一个插入失败,我们可以回滚所有可能成功的插入。我的问题是,如何检测插入语句是否失败?
start transaction;
insert into ..
insert into ..
insert into ..
if (failure) roll back
else commit.
进一步解释,
我有一个sql脚本文件,运行它可以将一堆数据插入到我的数据库中。我希望围绕这些插入包装一个事务,以便在运行时,如果其中一个失败,那么我们在执行任何插入之前回滚到初始状态。