sql - 在 H2 数据库中定义外键约束

标签 sql database foreign-keys h2

我是编码方面的新手,所以我在 SQL Server 中创建了一个表并且它起作用了,所以我在 H2 中使用了相同的命令,它说我的第二个表有语法问题,有人可以帮忙吗?

CREATE TABLE TOURISTINFO(
TOURISTINFO_ID INT PRIMARY KEY,
NAME VARCHAR(25) NOT NULL,
NATIONALITY VARCHAR(15) NOT NULL
)

CREATE TABLE PLANETICKETS(
DESTINATION VARCHAR(10) NOT NULL,
TICKETPRICE NUMERIC(8,2) NOT NULL,
TOURISTINFO_ID INT FOREIGN KEY REFERENCES TOURISTINFO
)

错误是

Syntax error in SQL statement "CREATE TABLE PLANETICKETS( 
DESTINATION VARCHAR(10) NOT NULL, 
TICKETPRICE NUMERIC(8,2) NOT NULL, 
TOURISTINFO_ID INT FOREIGN[*] KEY REFERENCES TOURISTINFO 
)"; expected "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFAULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TABLE PLANETICKETS( 
DESTINATION VARCHAR(10) NOT NULL, 
TICKETPRICE NUMERIC(8,2) NOT NULL, 
TOURISTINFO_ID INT FOREIGN KEY REFERENCES TOURISTINFO 
) [42001-173] 42001/42001

最佳答案

两步过程

  1. 创建没有外键的表
CREATE TABLE PLANETICKETS(
    DESTINATION VARCHAR(10) NOT NULL,
    TICKETPRICE NUMERIC(8,2) NOT NULL,
    TOURISTINFO_ID INT 
)
  1. 添加外键约束
 ALTER TABLE PLANETICKETS
    ADD FOREIGN KEY (TOURISTINFO_ID) 
    REFERENCES TOURISTINFO(TOURISTINFO_ID)

一步法

CREATE TABLE PLANETICKETS(
  DESTINATION VARCHAR(10) NOT NULL,
  TICKETPRICE NUMERIC(8,2) NOT NULL,
  TOURISTINFO_ID INT,
  foreign key (TOURISTINFO_ID) references touristinfo(TOURISTINFO_ID)
)

关于sql - 在 H2 数据库中定义外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41515563/

相关文章:

oracle 死锁父/子和子已索引 FK

mysql - 使用组合键中的一列作为外键

MySQL:MIN 和 Group By:获取每个人一天的 12x # 个事件的第一个时间戳

sql - '不存在' 和 'not in' ,哪个性能更好?

java - 通过Java代码更新access中的列

mysql - 将 sql 文件(数据库转储)读入 MATLAB

python - 如何通过django中的多级反向外键获取相关对象查询集?

javascript - HTML5 应用数据库同步

php - Wordpress 在 sql 查询中使用 $_GET

sql - 单元格中带有空格的 SQL Server 中的数据透视表