Sql 在Oracle BD中创建表,但出现错误
我认为这是在Oracle数据库中创建表的正确查询。。但它给出了以下错误: ORA-00907:缺少右括号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
如何更正语句?您可以使用格式化工具验证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)
);