簡體   English   中英

ORA-00922: 無法使用 ojdbc 在 oracle 中創建表

[英]ORA-00922 : Cannot Create table in oracle using ojdbc

我想創建下表

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) );

我的 sql 有什么問題嗎?

不,它工作正常db<>fiddle

您可以更改的唯一兩件事是:

  • 使用VARCHAR2而不是VARCHAR
  • 將約束命名為與表名不同的名稱。
CREATE TABLE EMPLOYEE (
    name_id     VARCHAR2(255),
    modified_at TIMESTAMP,
    created_at  TIMESTAMP,
    CONSTRAINT EMPLOYEE__name_id__u UNIQUE (name_id)
);

使用 java 代碼和驅動程序 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM