You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建表时如何为字段同时添加UNIQUE与NOT NULL约束?

Oracle中为字段同时添加NOT NULL和UNIQUE约束的正确方法

你的SQL语句报错是因为Name_NN NOT NULL (Name)的语法错误:NOT NULL作为表级约束时,不能直接用NOT NULL (列名)的格式,且缺少CONSTRAINT关键字。以下是两种正确的实现方式:

方式一:字段级约束(简洁写法)

直接在字段定义后同时指定两个约束,Oracle会自动为UNIQUE约束生成默认名称:

CREATE TABLE BOOK_STORES
(Store_ID NUMBER(8)
,Name VARCHAR2(30) NOT NULL UNIQUE
,Contact VARCHAR2(30)
,Rep_ID VARCHAR(5)
,CONSTRAINT Store_id_PK PRIMARY KEY (Store_ID));

方式二:表级约束(显式命名约束)

如果需要为所有约束指定自定义名称,NOT NULL可以通过CHECK (列名 IS NOT NULL)的形式实现(Oracle中NOT NULL本质是特殊的CHECK约束):

CREATE TABLE BOOK_STORES
(Store_ID NUMBER(8)
,Name VARCHAR2(30)
,Contact VARCHAR2(30)
,Rep_ID VARCHAR(5)
,CONSTRAINT Store_id_PK PRIMARY KEY (Store_ID)
,CONSTRAINT Name_UN UNIQUE (Name)
,CONSTRAINT Name_NN CHECK (Name IS NOT NULL));

这两种写法都能实现Name字段非空且唯一的要求,避免你遇到的ORA-00907语法错误。

内容的提问来源于stack exchange,提问作者JoshLeonthe1st

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:03:12