此语法图显示了包含多个下列选项的 CREATE TABLE 语句中表选项的顺序:
- WITH 选项
- SECURITY POLICY 选项
- 存储选项
- LOCK MODE 选项
- USING Access-Method 子句
- 统计信息选项。
如果您包含了多个 WITH 选项,则在连续的 WITH 选项之间需要逗号分隔符(,)。
有关在分片表的行中使用 WITH ROWIDS 选项的信息,请参阅使用 WITH ROWIDS 选项。
同一 CREATE TABLE 语句中的多个 WITH 选项不要求先后顺序,但是您包含的所有的 WITH 选项必须在上述列表中的任何其它五个表选项之前。
例如,下列两个 CREATE TABLE 语句是等价的:
CREATE STANDARD TABLE IF NOT EXISTS myShadowy_tab(colA INT, colB CHAR)
WITH ERRKEY, WITH CRCOLS, WITH AUDIT LOCK MODE ROW;
CREATE STANDARD TABLE IF NOT EXISTS myShadowy_tab(colA INT, colB CHAR)
WITH AUDIT, WITH ERRKEY, WITH CRCOLS LOCK MODE ROW;
如果您在相同的数据库中连续发出这些语句,则第二条语句失败,因为第一条语句创建的名为 myShadowy_tab 的表已经在数据库中存在。由于 IF NOT EXISTS 关键字,冗余的第二条语句不会 返回错误,但是它不会创建新表。
以下示例发生错误而失败,因为其它 Options 子句不能在 WITH 子句前面:
CREATE TABLE shadow_columns (colA INT, colB CHAR)
LOCK MODE ROW WITH AUDIT, WITH ERRKEY, WITH CRCOLS; --bad options order
下一个 CREATE TABLE 示例也失败,因为在同一 Options 子句中 Statistics 选项不能在 LOCK MODE 选项前面:
CREATE TABLE shadow_columns (colA INT, colB CHAR)
STATCHANGE 25 STATLEVEL TABLE LOCK MODE PAGE; --bad options order