los*_*its 1 sql oracle oracle-sqldeveloper
使用Oracle SqlDeveloper
表T有两列ID(Number)Desc(VARCHAR2)
我尝试以下查询来添加检查:
ALTER TABLE T
ADD CONSTRAINT 100chk CHECK (ID BETWEEN 0 AND 100);
Run Code Online (Sandbox Code Playgroud)
错误报告:SQL错误:ORA-00902:无效的数据类型00902. 00000 - "无效的数据类型"*原因:
*操作:
ID列是一个数字数据类型 - 为什么不让它添加该约束?
Oracle可能会对您的约束名称感到困惑100chk.有效名称以字母开头.您可以在无效名称周围加上双引号,Oracle会接受它,但这通常被认为是一个坏主意.
尝试命名您的约束chk100:
ALTER TABLE T ADD CONSTRAINT chk100 CHECK (ID BETWEEN 0 AND 100);
Run Code Online (Sandbox Code Playgroud)
Oracle的对象命名规则就在这里.此链接适用于10.2,但信息也适用于11.x.