sql—在oracle数据库中将两个insert查询作为单个事务处理

toiithl6  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(364)

我试图在oracle中将两个insert查询作为一个事务处理。
我试过以下方法

  1. BEGIN
  2. INSERT INTO table1 VALUES (27, TO_DATE('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'), '622222222222', 167, 15454015, '335218', '5623125454');
  3. INSERT INTO table2 VALUES ('145218', TO_DATE('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'), ADD_MONTHS(TO_DATE('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'),1));
  4. END;

但这给了我一个错误
错误报告-

  1. ORA-06550: line 5, column 1:
  2. PLS-00103: Encountered the symbol "INSERT"
  3. 06550. 00000 - "line %s, column %s:\n%s"
  4. * Cause: Usually a PL/SQL compilation error.
  5. * Action:
tmb3ates

tmb3ates1#

指定要插入值的列。试试下面。

  1. BEGIN
  2. INSERT INTO TABLE1 (COL1,
  3. COL2,
  4. COL3,
  5. COL4,
  6. COL5,
  7. COL6,
  8. COL7)
  9. VALUES (27,
  10. TO_DATE ('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'),
  11. '622222222222',
  12. 167,
  13. 15454015,
  14. '335218',
  15. '5623125454');
  16. INSERT INTO TABLE2 (COL1, COL2, COL3)
  17. VALUES (
  18. '145218',
  19. TO_DATE ('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'),
  20. ADD_MONTHS (
  21. TO_DATE ('19-Jun-2018 05:47', 'DD-MON-YYYY HH24:MI'),
  22. 1));
  23. COMMIT;
  24. END;
  25. /
展开查看全部
vmpqdwk3

vmpqdwk32#

如果您使用的是纯sql,那么oraclesql中就没有begintransaction语句(beginispl/sql关键字仅用于启动pl/sql块)。
事务从数据库中的第一次写入开始,以提交或回滚结束。
例子:

  1. TEST@DB0>truncate table t1;
  2. Table truncated.
  3. TEST@DB0>truncate table t2;
  4. Table truncated.
  5. TEST@DB0>insert into t1 values(1, 'ONE');
  6. 1 row created.
  7. TEST@DB0>insert into t2 values(2, 'TWO');
  8. 1 row created.
  9. TEST@DB0>rollback;
  10. Rollback complete.
  11. TEST@DB0>select * from t1;
  12. no rows selected
  13. TEST@DB0>select * from t2;
  14. no rows selected
  15. TEST@DB0>insert into t1 values(1, 'ONE');
  16. 1 row created.
  17. TEST@DB0>insert into t2 values(2, 'TWO');
  18. 1 row created.
  19. TEST@DB0>commit;
  20. Commit complete.
  21. TEST@DB0>select * from t1;
  22. X1 Y1
  23. ---------- ----------
  24. 1 ONE
  25. TEST@DB0>select * from t2;
  26. X2 Y2
  27. ---------- ----------
  28. 2 TWO
  29. TEST@DB0>
展开查看全部

相关问题