在 YugabyteDB 的事务中使用多个 DDL
Using multiple DDLs within a transaction in YugabyteDB
有谁知道我不能在同一个事务中交替截断和插入的原因(特定于 yugabyte 或其他原因)?
这些步骤:
- 截断 table.
- 在 table 中插入一行。
- 再次截断。
- 在 table 中插入另一行。
在最后一步导致此错误:
ERROR: Operation failed. Try again.: Unknown transaction, could be recently aborted: e415ae05-0d46-42f5-b18d-f27b344b5642 (SQLSTATE 40001)
[免责声明]:这个问题最初是在 YugabyteDB Community Slack 频道上提出的。
在 YugabyteDB 中,目前 'truncate' 不是事务性的。建议避免使用:
a) 在多步事务中截断
或
b) 运行 与我们对相同 table 的 read/write 操作同时截断。
据我所知,其他分布式 SQL 数据库也可以是:
a) 不支持截断(如 Google Cloud Spanner)。参见
或者,
b) 他们支持截断,但不支持事务处理方式。
我们确实计划在未来限制此限制。短期内可能
delete from T;
可以用作解决方法;这比使用截断更重一些,但将是事务性的。
有谁知道我不能在同一个事务中交替截断和插入的原因(特定于 yugabyte 或其他原因)?
这些步骤:
- 截断 table.
- 在 table 中插入一行。
- 再次截断。
- 在 table 中插入另一行。
在最后一步导致此错误:
ERROR: Operation failed. Try again.: Unknown transaction, could be recently aborted: e415ae05-0d46-42f5-b18d-f27b344b5642 (SQLSTATE 40001)
[免责声明]:这个问题最初是在 YugabyteDB Community Slack 频道上提出的。
在 YugabyteDB 中,目前 'truncate' 不是事务性的。建议避免使用:
a) 在多步事务中截断
或
b) 运行 与我们对相同 table 的 read/write 操作同时截断。
据我所知,其他分布式 SQL 数据库也可以是:
a) 不支持截断(如 Google Cloud Spanner)。参见
或者,
b) 他们支持截断,但不支持事务处理方式。
我们确实计划在未来限制此限制。短期内可能
delete from T;
可以用作解决方法;这比使用截断更重一些,但将是事务性的。