gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:14:28 25 4
gpt4 key购买 nike

我将以下内容作为 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,1)),
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来自 users 的专栏.您似乎更可能想要 toolsId列引用 toolsId来自 tools 的列表或者您想将该列命名为 userId如果您想引用 userId来自 users 的专栏.但是我会质疑为什么你有一个单独的 cs2_users列而不是简单地将此信息放入 users table 。

关于oracle - 不能在 CREATE TABLE 中使用内联约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com