1

我有一个很长的交易,我已经开始使用BEGIN,我在最后一行之前犯了大约 3 行的错误。有没有办法使那条线归零?

这是一个例子:

BEGIN TRANSACTION;
CREATE TABLE purchase(id integer PRIMARY KEY, purchasePrice integer CHECK(purchasePrice>0), customer text);
INSERT INTO purchase(purchasePrice, customer) VALUES(1200, "Jerome");
INSERT INTO purchase(purchasePrice, customer) VALUES(200, "Jeffery");
INSERT INTO purchase(purchasePrice, customer) VALUES(40, "Craig");
INSERT INTO purchase(purchasePrice, customer) VALUES(1640, "Donovan");
INSERT INTO purchase(purchasePrice, customer) VALUES(100, "Williams");
INSERT INTO purchase(purchasePrice, customer) VALUES(50, "Matsushi");
INSERT INTO purchase(purchasePrice, customer) VALUES(150, "Xhao");
INSERT INTO purchase(purchasePrice, customer) VALUES(250, "Dilberta");
INSERT INTO purchase(purchasePrice, customer) VALUES(840, "Brow"); //Supposed to be 9440,"Brown"
INSERT INTO purchase(purchasePrice, customer) VALUES(440, "DarkBrown");
INSERT INTO purchase(purchasePrice, customer) VALUES(20, "Black");
COMMIT;

我明白我可以稍后更新受影响的行。

另一个示例情况:

BEGIN TRANSACTION;
CREATE TABLE Movies(MId integer primary key autoincrement, Title text);
INSERT INTO Movies VALUES(1,'Capote');
INSERT INTO Movies VALUES(2,'Scent of a woman');
INSERT INTO Movies VALUES(3,'Stigmata');
INSERT INTO Movies VALUES(4,'Exorcist');
INSERT INTO Movies VALUES(5,'Hamsun');
//Changed my mind and want to name the table "movie" and  name the columns "m_id" and "title".

所以,我想知道a)如何取消;b)是否有可能上升几行,如果可以,如何?

4

2 回答 2

1

如果您创建了保存点,您将能够回滚部分事务。(但这将是更多的打字。)

当您进行许多更改时,最好在执行之前将所有 SQL 命令写入一个文本文件。

于 2012-11-09T09:25:52.913 回答
0

ROLLBACK功能取消了完整的交易。我还没有找到逐行返回的方法,因此UPDATEorALTER命令可以分别用于表或字段/行。

于 2012-11-09T05:54:18.630 回答