【问题标题】:H2: Error with a multi-row insert statementH2:多行插入语句出错
【发布时间】:2020-10-26 10:56:12
【问题描述】:

我正在使用带有初始化 SQL 脚本的内存 H2 数据库。下表已创建:

CREATE TABLE GINA_T_WAM_GUESTDOMAIN (
    WFD_C_NAME VARCHAR(12) NOT NULL,
    WFD_C_BASEURI VARCHAR(128) NOT NULL,

    PRIMARY KEY (WFD_C_NAME, WFD_C_BASEURI),
    FOREIGN KEY (WFD_C_NAME) REFERENCES GINA_T_WAM_GUEST(WFG_C_NAME)
);

现在我可以像这样在该表中插入一些行:

INSERT INTO GINA_T_WAM_GUESTDOMAIN(WFD_C_NAME,WFD_C_BASEURI)
    VALUES('DEVINT', 'https://dev.etat-ge.ch');

INSERT INTO GINA_T_WAM_GUESTDOMAIN(WFD_C_NAME,WFD_C_BASEURI)
    VALUES('DEVINT', 'https://devtech.etat-ge.ch');

但是当我尝试在单个语句中插入两行时:

INSERT INTO GINA_T_WAM_GUESTDOMAIN(WFD_C_NAME,WFD_C_BASEURI)
    VALUES('DEVINT', 'https://dev.etat-ge.ch'),
    VALUES('DEVINT', 'https://devtech.etat-ge.ch');

我收到以下错误消息:

列数不匹配

有人知道这个问题吗?是否可以在一个语句中插入几行?

【问题讨论】:

  • 你试过了吗:VALUES('DEVINT', 'https://dev.etat-ge.ch'),('DEVINT', 'https://devtech.etat-ge.ch');
  • @user1170330 刚刚做了:它有效。将其作为答案,以便我接受。

标签: java sql h2


【解决方案1】:

这就是您可以在单个 SQL 语句中同时插入多行的方法:

VALUES('DEVINT', 'https://dev.etat-ge.ch'),
      ('DEVINT', 'https://devtech.etat-ge.ch');

它被称为行值构造函数,是自 SQL-92 以来的标准。


来源:http://www.andrew.cmu.edu/user/shadow/sql/sql1992.txt(第 7.1 章)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多