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

ORA-00933错误求助:Oracle APEX中创建表SQL语句问题

解决ORA-00933: SQL command not properly ended错误

问题根源

你代码里的错误在于表级约束中使用了NOT NULL关键字,Oracle不支持这种语法——NOT NULL只能作为列级约束存在,若要在表级实现非空限制,需要用CHECK约束替代。

你的原始代码里,像CONSTRAINT not_null_customer_last_name NOT NULL (last_name)这种写法完全不符合Oracle的约束定义规则,这就是触发错误的直接原因。

两种修正方案

方案1:列级NOT NULL约束(推荐)

把NOT NULL直接附加在对应列的定义后面,也可以给约束指定名称:

DROP TABLE customers;

--1 create tables
CREATE TABLE customers (
  customer_id NUMBER(10),
  -- 带约束名的列级非空
  last_name VARCHAR2(25) CONSTRAINT not_null_customer_last_name NOT NULL,
  first_name VARCHAR2(25) CONSTRAINT not_null_customer_first_name NOT NULL, 
  home_phone VARCHAR2(12) CONSTRAINT not_null_customer_home_phone NOT NULL,
  address VARCHAR2(100) CONSTRAINT not_null_customer_address NOT NULL,
  city VARCHAR2(30) CONSTRAINT not_null_customer_city NOT NULL,
  state VARCHAR2(2) CONSTRAINT not_null_customer_state NOT NULL,
  email VARCHAR2(25),
  cell_phone VARCHAR2(12),
  CONSTRAINT pk_customer_customer_id PRIMARY KEY (customer_id)
); 

如果不需要自定义约束名,可简化写法:

DROP TABLE customers;

--1 create tables
CREATE TABLE customers (
  customer_id NUMBER(10),
  last_name VARCHAR2(25) NOT NULL,
  first_name VARCHAR2(25) NOT NULL, 
  home_phone VARCHAR2(12) NOT NULL,
  address VARCHAR2(100) NOT NULL,
  city VARCHAR2(30) NOT NULL,
  state VARCHAR2(2) NOT NULL,
  email VARCHAR2(25),
  cell_phone VARCHAR2(12),
  CONSTRAINT pk_customer_customer_id PRIMARY KEY (customer_id)
); 

方案2:表级CHECK约束替代NOT NULL

如果一定要用表级约束的形式,将NOT NULL替换为CHECK(列名 IS NOT NULL):

DROP TABLE customers;

--1 create tables
CREATE TABLE customers (
  customer_id NUMBER(10),
  last_name VARCHAR2(25),
  first_name VARCHAR2(25), 
  home_phone VARCHAR2(12),
  address VARCHAR2(100),
  city VARCHAR2(30),
  state VARCHAR2(2),
  email VARCHAR2(25),
  cell_phone VARCHAR2(12),
  CONSTRAINT pk_customer_customer_id PRIMARY KEY (customer_id),
  CONSTRAINT not_null_customer_last_name CHECK (last_name IS NOT NULL),
  CONSTRAINT not_null_customer_first_name CHECK (first_name IS NOT NULL),
  CONSTRAINT not_null_customer_home_phone CHECK (home_phone IS NOT NULL), 
  CONSTRAINT not_null_customer_address CHECK (address IS NOT NULL), 
  CONSTRAINT not_null_customer_city CHECK (city IS NOT NULL), 
  CONSTRAINT not_null_customer_state CHECK (state IS NOT NULL)
); 

关于你之前尝试列级约束未解决的推测

如果之前改列级约束没生效,大概率是修改时没彻底移除错误的表级NOT NULL约束,或者列级约束的写法有误(比如没把NOT NULL放在列定义后面)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:35:19