ORA-00922: 无法使用 jdbc 在 Oracle 中创建 table
ORA-00922 : Cannot Create table in oracle using ojdbc
我想创建以下内容table
CREATE TABLE EMPLOYEE (
name_id varchar(255) PRIMARY KEY,
modified_at TIMESTAMP,
created_at TIMESTAMP
);
但是oracle报错
ORA-00922: 选项缺失或无效
我也尝试了以下 SQL 请求,但出现了同样的问题
CREATE TABLE EMPLOYEE (
name_id varchar(255),
modified_at TIMESTAMP,
created_at TIMESTAMP,
CONSTRAINT EMPLOYEE UNIQUE (name_id)
);
使用 java 代码和驱动程序 ojdbc6-11.2.0.4.jar
执行的请求
我的 sql 有什么问题吗?
CREATE TABLE EMPLOYEE (
name_id varchar(255) PRIMARY KEY,
modified_at TIMESTAMP,
created_at TIMESTAMP
);
CREATE TABLE EMPLOYEE (
name_id varchar(255),
modified_at TIMESTAMP,
created_at TIMESTAMP,
CONSTRAINT EMPLOYEE UNIQUE (name_id)
);
is there anything wrong in my sql ?
不,它工作正常db<>fiddle。
您唯一可以更改的两件事是:
- 使用
VARCHAR2
而不是 VARCHAR
。
- 将约束命名为与 table 不同的名称。
CREATE TABLE EMPLOYEE (
name_id VARCHAR2(255),
modified_at TIMESTAMP,
created_at TIMESTAMP,
CONSTRAINT EMPLOYEE__name_id__u UNIQUE (name_id)
);
The request where executed using java code and the driver ojdbc6-11.2.0.4.jar
如果您是 运行 通过 JDBC 的语句,请删除末尾的分号。分号是 SQL/Plus(和 SQL 开发人员)中的语句终止符,但是当您使用 JDBC 和类似的(当您只永远传递单个语句,因此不需要终止符)。
您可以使用如下内容代替内联 pk 声明:
CREATE TABLE EMPLOYEE (
name_id varchar(255) PRIMARY KEY,
modified_at TIMESTAMP,
created_at TIMESTAMP
)
ALTER TABLE EMPLOYEE
ADD CONSTRAINT employee_pk PRIMARY KEY (name_id);
我想创建以下内容table
CREATE TABLE EMPLOYEE (
name_id varchar(255) PRIMARY KEY,
modified_at TIMESTAMP,
created_at TIMESTAMP
);
但是oracle报错
ORA-00922: 选项缺失或无效
我也尝试了以下 SQL 请求,但出现了同样的问题
CREATE TABLE EMPLOYEE (
name_id varchar(255),
modified_at TIMESTAMP,
created_at TIMESTAMP,
CONSTRAINT EMPLOYEE UNIQUE (name_id)
);
使用 java 代码和驱动程序 ojdbc6-11.2.0.4.jar
执行的请求我的 sql 有什么问题吗?
CREATE TABLE EMPLOYEE ( name_id varchar(255) PRIMARY KEY, modified_at TIMESTAMP, created_at TIMESTAMP );
CREATE TABLE EMPLOYEE ( name_id varchar(255), modified_at TIMESTAMP, created_at TIMESTAMP, CONSTRAINT EMPLOYEE UNIQUE (name_id) );
is there anything wrong in my sql ?
不,它工作正常db<>fiddle。
您唯一可以更改的两件事是:
- 使用
VARCHAR2
而不是VARCHAR
。 - 将约束命名为与 table 不同的名称。
CREATE TABLE EMPLOYEE (
name_id VARCHAR2(255),
modified_at TIMESTAMP,
created_at TIMESTAMP,
CONSTRAINT EMPLOYEE__name_id__u UNIQUE (name_id)
);
The request where executed using java code and the driver ojdbc6-11.2.0.4.jar
如果您是 运行 通过 JDBC 的语句,请删除末尾的分号。分号是 SQL/Plus(和 SQL 开发人员)中的语句终止符,但是当您使用 JDBC 和类似的(当您只永远传递单个语句,因此不需要终止符)。
您可以使用如下内容代替内联 pk 声明:
CREATE TABLE EMPLOYEE (
name_id varchar(255) PRIMARY KEY,
modified_at TIMESTAMP,
created_at TIMESTAMP
)
ALTER TABLE EMPLOYEE
ADD CONSTRAINT employee_pk PRIMARY KEY (name_id);