gpt4 book ai didi

sql - h2 是否支持使用辅助键创建表?

转载 作者:行者123 更新时间:2023-12-04 23:43:38 25 4
gpt4 key购买 nike

h2是否支持带secondary key的建表?

当我尝试创建表时,它失败并显示“org.h2.jdbc.JdbcSQLException:未知数据类型:”(“; SQL 语句:”

CREATE TABLE IF NOT EXISTS testTable
(col1 BIGINT(20) NOT NULL AUTO_INCREMENT,
col2 BIGINT(20) NOT NULL,
col3 BIGINT(20) NOT NULL,
col4 VARCHAR(100) NOT NULL,
PRIMARY KEY(col1),
KEY(col1, col2, col3));

但是这个成功了:

CREATE TABLE IF NOT EXISTS testTable
(col1 BIGINT(20) NOT NULL AUTO_INCREMENT,
col2 BIGINT(20) NOT NULL,
col3 BIGINT(20) NOT NULL,
col4 VARCHAR(100) NOT NULL,
PRIMARY KEY(col1));

最佳答案

KEY 是 MySQL 特定的语法:

KEY(col1, col2, col3)

您正在寻找的是 UNIQUE 约束,例如

CREATE TABLE IF NOT EXISTS testTable (
col1 BIGINT(20) NOT NULL AUTO_INCREMENT,
col2 BIGINT(20) NOT NULL,
col3 BIGINT(20) NOT NULL,
col4 VARCHAR(100) NOT NULL,
PRIMARY KEY (col1),
UNIQUE (col1, col2, col3)
);

请注意,我通常喜欢为我的约束命名,因为这将使以后更容易找到/删除它们:

CREATE TABLE IF NOT EXISTS testTable (
col1 BIGINT(20) NOT NULL AUTO_INCREMENT,
col2 BIGINT(20) NOT NULL,
col3 BIGINT(20) NOT NULL,
col4 VARCHAR(100) NOT NULL,
CONSTRAINT primary_key PRIMARY KEY (col1),
CONSTRAINT secondary_key UNIQUE (col1, col2, col3)
);

如果您不追求独特性

有趣的是(正如评论中也指出的那样),MySQL 使用术语 KEY 表示非唯一索引。在大多数数据库(包括 MySQL)中,您只需为这种情况创建一个索引:

CREATE INDEX secondary_index ON testTable(col1, col2, col3);

关于sql - h2 是否支持使用辅助键创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36526479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com