选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Understanding data definition language (DDL) in Aurora DSQL

聚焦模式
Understanding data definition language (DDL) in Aurora DSQL - Amazon Aurora DSQL
此页面尚未翻译为您的语言。 请求翻译

Amazon Aurora DSQL is provided as a Preview service. To learn more, see Betas and Previews in the AWS Service Terms.

Amazon Aurora DSQL is provided as a Preview service. To learn more, see Betas and Previews in the AWS Service Terms.

Aurora DSQL features a Multi-AZ distributed and shared-nothing database layer built on top of multi-tenant compute and storage fleets. Because there isn't a single primary database node or leader, the database catalog is distributed, and schema changes are managed as distributed transactions. As such, there are a few ways in which DDL behaves differently in Aurora DSQL than PostgreSQL.

  • Aurora DSQL throws a concurrency control violation error if you run one transaction while another transaction updates a resource. Consider the following example.

    • Create table foobar in session 1.

    • After Aurora DSQL creates the table foobar, you run the statement SELECT * from foobar in session 2. Aurora DSQL returns with the error SQL Error [40001]: ERROR: schema has been updated by another transaction, please retry: (OC001).

      Note

      During preview, there is a known issue that increases the scope of this concurrency control error to all objects within the same schema/namespace.

  • Transactions in Aurora DSQL can contain only one DDL statement and can't have both DDL and DML statements. For example, you can't create a table and insert data into the same table within the same transaction.

    For example, Aurora DSQL supports the following statements.

    BEGIN; CREATE TABLE FOO (ID_col integer); COMMIT;
    BEGIN; INSERT into FOO VALUES (1); COMMIT;

    Aurora DSQL doesn't support the following.

    BEGIN; CREATE TABLE FOO (ID_col integer); INSERT into FOO VALUES (1); COMMIT;
  • Finally, Aurora DSQL runs DDL statements asynchronously. This means that changes to large tables, such as adding an index or modifying a column, can run without downtime or performance impact. For more information about Aurora DSQL's asynchronous job manager, see Creating async indexes in Aurora DSQL.

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。