Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle BD中创建表,但出现错误_Sql_Oracle_Ddl - Fatal编程技术网

Sql 在Oracle BD中创建表,但出现错误

Sql 在Oracle BD中创建表,但出现错误,sql,oracle,ddl,Sql,Oracle,Ddl,我认为这是在Oracle数据库中创建表的正确查询。。但它给出了以下错误: ORA-00907:缺少右括号 如何更正语句?您可以使用格式化工具验证SQL,如 auto_increment似乎是一个专有的MySQL扩展,因此它对Oracle无效 另外,id int not null auto_increment主键id不需要最后一个id 使用Oracle,您应该尝试以下方法 CREATE TABLE employees ( id INT NOT NULL auto_increme

我认为这是在Oracle数据库中创建表的正确查询。。但它给出了以下错误:

ORA-00907:缺少右括号


如何更正语句?

您可以使用格式化工具验证SQL,如

auto_increment似乎是一个专有的MySQL扩展,因此它对Oracle无效

另外,id int not null auto_increment主键id不需要最后一个id

使用Oracle,您应该尝试以下方法

CREATE TABLE employees (
  id         INT NOT NULL auto_increment PRIMARY KEY (ID),
  first_name VARCHAR(20) DEFAULT NULL,
  last_name  VARCHAR(20) DEFAULT NULL,
  salary     INT         DEFAULT NULL);
有时,SQL是很奇特的,因为即使有一个标准的ANSI,大多数DBMS供应商也会在SQL中添加他们的专有扩展,创建他们自己的语言,因此很少出现不做任何更改就可以将一个SQL从一个DB移植到另一个DB的情况


而且,这是一条毫无用处的错误消息。它至少可以说是哪种立场。此外,没有缺少括号,但有一个意外标记已编辑:New feature 12c

    CREATE SEQUENCE seq;

CREATE TABLE employees
  (
     id         INTEGER NOT NULL PRIMARY KEY,
     first_name VARCHAR2(20) DEFAULT NULL,
     last_name  VARCHAR2(20) DEFAULT NULL,
     salary     INTEGER DEFAULT NULL
  );

INSERT INTO employees
VALUES      (seq.NEXTVAL,
         'name',
         'last name',
         1);  
为什么要使用默认空值

VARCHAR数据类型与VARCHAR2数据类型同义。为避免可能的行为更改,请始终使用VARCHAR2数据类型存储可变长度字符串。

Replace

CREATE TABLE employees(
  id          NUMBER GENERATED ALWAYS AS IDENTITY,
  first_name  VARCHAR2(30)
etc.
);

这样效率更高

  id         INT NOT NULL auto_increment PRIMARY KEY,

oracle何时开始支持自动增量?oracle不支持自动增量。使用序列。12c支持自动递增。它被称为Identity Columns。这可能会起作用,但更安全的做法是让触发器强制执行主键中的序列。id号始终生成为Identity将起作用。。。我试过了,但没有成功
  id         INT NOT NULL auto_increment PRIMARY KEY,
CREATE TABLE EMPLOYEES_T(
ID NUMBER,
FIRST_NAME VARCHAR2(20) DEFAULT NULL,
LAST_NAME VARCHAR2(20) DEFAULT NULL,
SALARY INTEGER DEFAULT NULL,
CONSTRAINT PK_EMPLOYEES_T PRIMARY KEY(ID)
);