oracle – 不能在CREATE TABLE中使用内联约束

oracle – 不能在CREATE TABLE中使用内联约束,第1张

概述我在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_us 我在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 2012copyright (c) 1982,2011,Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith 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表中.

总结

以上是内存溢出为你收集整理的oracle – 不能在CREATE TABLE中使用内联约束全部内容,希望文章能够帮你解决oracle – 不能在CREATE TABLE中使用内联约束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1163192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存