Oracle ORA-00903:创建表时表名无效

Oracle ORA-00903:创建表时表名无效,oracle,Oracle,请帮忙。我不知道发生了什么事。我甚至试着放下桌子,但还是不成功 CREATE TABLE 'customer' ( 'customer_id' int NOT NULL AUTO_INCREMENT, 'type' varchar(45) NOT NULL, 'name' varchar(45) NOT NULL, 'cut_off' int NOT NULL, PRIMARY KEY ('customer_id') ) Error starting at line :

请帮忙。我不知道发生了什么事。我甚至试着放下桌子,但还是不成功

CREATE TABLE 'customer' (
  'customer_id' int NOT NULL AUTO_INCREMENT,
  'type' varchar(45) NOT NULL,
  'name' varchar(45) NOT NULL,
  'cut_off' int NOT NULL,
  PRIMARY KEY ('customer_id')
)


Error starting at line : 1 in command -
CREATE TABLE 'customer' (
  'customer_id' int NOT NULL AUTO_INCREMENT,
  'type' varchar(45) NOT NULL,
  'name' varchar(45) NOT NULL,
  'cut_off' tinyint NOT NULL,
  PRIMARY KEY ('customer_id')
)

列名和表名应不带引号


请参阅创建表查询列,表名应不带引号


请参阅创建表查询代码中存在多个问题

  • 表和列的名称不应该用单引号括起来
  • AUTO_INCREMENT
    关键字是不允许的。它应该在oracle中以不同的方式实现
  • PK列上不需要
    非空
    。这是含蓄的
更正代码:

CREATE TABLE customer (
  customer_id int GENERATED always as IDENTITY,
  type varchar(45) NOT NULL,
  name varchar(45) NOT NULL,
  cut_off int NOT NULL,
  primary key(customer_id)
);

代码中存在多个问题

  • 表和列的名称不应该用单引号括起来
  • AUTO_INCREMENT
    关键字是不允许的。它应该在oracle中以不同的方式实现
  • PK列上不需要
    非空
    。这是含蓄的
更正代码:

CREATE TABLE customer (
  customer_id int GENERATED always as IDENTITY,
  type varchar(45) NOT NULL,
  name varchar(45) NOT NULL,
  cut_off int NOT NULL,
  primary key(customer_id)
);

表名和列名应使用双引号,而不是单引号。@Barmar。。。或者,如果表名不是保留关键字,甚至可能没有双引号。@TimBiegeleisen我不是Oracle用户,但我知道有时即使不是保留字也需要双引号。我认为这与大写和小写有关。@Barmer如果使用双引号使表名区分大小写,它还允许您违反其他表命名规则。每次引用表时,都需要使用完全相同的区分大小写名称的双引号。通常最好避免。默认情况下,如果不使用双引号,表名将以大写形式存储,并且可以不区分大小写引用(只要不使用双引号)。表名和列名应使用双引号,而不是单引号。@Barmar。。。或者,如果表名不是保留关键字,甚至可能没有双引号。@TimBiegeleisen我不是Oracle用户,但我知道有时即使不是保留字也需要双引号。我认为这与大写和小写有关。@Barmer如果使用双引号使表名区分大小写,它还允许您违反其他表命名规则。每次引用表时,都需要使用完全相同的区分大小写名称的双引号。通常最好避免。默认情况下,如果没有双引号,表名将以大写形式存储,并且可以不区分大小写地引用(只要不使用双引号)。