首页 > 解决方案 > 具有多个线外约束的 ALTER TABLE 的铁路图不正确?

问题描述

目前使用的是 18c,但这种明显的不一致出现在早期版本中(肯定是回到 11g)。

在这种特殊情况下,我向现有表添加了多个离线约束。

所有铁路图都可以在这里找到:https ://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/ALTER-TABLE.html

这是铁路图ALTER TABLE

在此处输入图像描述

然后,这是铁路图constraint_clauses

在此处输入图像描述

最后,这是铁路图out_of_line_constraint

在此处输入图像描述

铁路图中没有()或a ,。但是 SQL 查询必须有它们。

这是有效的代码:

Create table a ( x number );

Alter table a add (
  constraint x1 check ( x > 0 ),
  constraint x2 check ( x < 10)
);

我在阅读和解释铁路图时的错误在哪里?还有什么我必须知道的吗?

标签: sqloraclealter-table

解决方案


不需要括号或逗号。这有效:

alter table a 
  add constraint x1 check (x > 0)
  add constraint x2 check (x < 10);

但无论哪种方式,这都是一个文档错误,因为铁路图并未表明“constraint_clauses”引用是可重复的。


推荐阅读