我正在尝试用2个外键创建一个表,但不断出现缺少左括号的错误

时间:2020-03-16 14:59:26

标签: sql oracle

TimeReport

1 个答案:

答案 0 :(得分:2)

使用内嵌约束时,您不需要FOREIGN KEY关键字,也不需要外嵌约束和内嵌约束:

create table downloads (
Download_id      varchar2(150) not null,
User_id          varchar2(150) references users (User_id),
Download_date    date          not null,
File_name        varchar(300)  not null,
Product_id       varchar(300)  references Products (Product_id)
);

db<>fiddle

此外,您应该考虑:

  • 命名约束;
  • 使用整数作为主键,而不是(大)字符串;
  • 不为列标识符加上表名;和
  • 使用IDENTITIY列(如果您使用的是Oracle 12或更高版本,则使用序列)。

赞:

create table downloads (
  id         NUMBER(10,0)
             GENERATED ALWAYS AS IDENTITY
             CONSTRAINT downloads__id__pk PRIMARY KEY,
  User_id    NUMBER(10,0)
             CONSTRAINT downloads__user_id__fk REFERENCES users (id),
  datetime   DATE
             CONSTRAINT downloads__datetime__nn NOT NULL,
  File_name  VARCHAR2(300)
             CONSTRAINT downloads__file_name__nn NOT NULL,
  Product_id NUMBER(10,0)
             CONSTRAINT downloads__product_id__FK REFERENCES Products (id)
);

db<>fiddle