oracle – 不能在CREATE TABLE中使用内联约束
发布时间:2021-01-23 15:42:47 所属栏目:站长百科 来源:网络整理
导读:我在Oracle中有以下作为CREATE TABLE: CREATE TABLE cs2_users ( empnum varchar2(12) PRIMARY KEY,toolsId varchar2(20) CONSTRAINT nn_cs2_users_toolsId NOT NULL CONSTRAINT fk_cs2_users_users FOREIGN KEY REFERENCES users.userid,admin number(1,0)
我在Oracle中有以下作为CREATE TABLE: CREATE TABLE cs2_users ( empnum varchar2(12) PRIMARY KEY,toolsId varchar2(20) CONSTRAINT nn_cs2_users_toolsId NOT NULL CONSTRAINT fk_cs2_users_users FOREIGN KEY REFERENCES users.userid,admin number(1,0) DEFAULT 0 CONSTRAINT nn_cs2_users_admin NOT NULL CONSTRAINT ck_cs2_users_admin (admin IN (0,1)),givenname varchar2(30) NOT NULL,middlename varchar2(30),sn varchar2(30) NOT NULL,mail varchar2(50) NOT NULL ); 但是它失败并出现此错误: ERROR at line 5: ORA-02253: constraint specification not allowed here` 当我使用SQL * Plus连接时,这是版本信息: SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 18 16:38:27 2012 Copyright (c) 1982,2011,Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning,OLAP,Data Mining and Real Application Testing options 救命? 解决方法如果要指定内联约束,则该定义与列的定义分开.如果要创建CHECK约束,则需要指定约束的类型.并且您的外键约束需要指定您引用的列.因此,例如,这将起作用SQL> create table users( userid varchar2(20) primary key ); Table created. SQL> CREATE TABLE cs2_users ( 2 empnum varchar2(12) PRIMARY KEY,3 toolsId varchar2(20) constraint nn_cs2_users_toolsId NOT NULL,4 CONSTRAINT fk_cs2_users_users FOREIGN KEY(toolsId) REFERENCES users(userid),5 admin number(1,0) DEFAULT 0 constraint nn_cs2_users_admin NOT NULL,6 CONSTRAINT ck_cs2_users_admin CHECK(admin IN (0,7 givenname varchar2(30) NOT NULL,8 middlename varchar2(30),9 sn varchar2(30) NOT NULL,10 mail varchar2(50) NOT NULL 11 ); Table created. 虽然看起来很奇怪,toolsId引用了用户的userId列.您似乎更希望toolsId列从工具表中引用toolsId列,或者如果要从用户引用userId列,则希望将列命名为userId.但后来我会问为什么你有一个单独的cs2_users列而不是简单地将这些信息放在users表中. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |