【问题标题】:How to see my table column is foreign key or not in H2 database如何在 H2 数据库中查看我的表列是否为外键
【发布时间】:2018-04-22 20:14:03
【问题描述】:

我创建了两个表用户和联系人。用户是父表,联系人是子表。我将 userId 称为联系表中的外键。我已经完成了以下查询。

CREATE TABLE user(
  userId INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NULL,
  phone VARCHAR(50) NULL,
  email VARCHAR(50) NULL,
  address VARCHAR(150) NULL,
  loginName VARCHAR(45) NOT NULL,
  password VARCHAR(50) NOT NULL,
  role INT(1) NOT NULL DEFAULT 2,
  loginStatus INT(1) NOT NULL DEFAULT 1,
  PRIMARY KEY(userId),
);

=====第二张表=========

CREATE TABLE contact(
  contactId INT NOT NULL AUTO_INCREMENT,
  userId INT NULL,
  name VARCHAR(50) NULL,
  phone VARCHAR(50) NULL,
  email VARCHAR(50) NULL,
  address VARCHAR(150) NULL,
  remark VARCHAR(150) NULL,
  PRIMARY KEY(contactId),
  CONSTRAINT fk_con_userId FOREIGN KEY (userId)
    REFERENCES user (userId)
  ON DELETE CASCADE ON UPDATE NO ACTION
);

为了查看列信息,我在 H2 数据库中编写了以下查询。

显示来自联系人的列;

但我的表没有将 userId 显示为外键。

【问题讨论】:

    标签: database h2


    【解决方案1】:

    是的,您使用的show 命令不显示外键。不过,您创建的外键那里。

    要检查外键是否存在,您可以查询INFORMATION_SCHEMA,如下所示:

    select * from information_schema.constraints
      where table_name = 'CONTACT'
        and column_list = 'USERID';
    

    此查询显示一行,为您提供 FK 的详细信息。 SQL 列的值为:

    ALTER TABLE PUBLIC.CONTACT 添加约束 PUBLIC.FK_CON_USERID FOREIGN KEY(USERID) INDEX PUBLIC.FK_CON_USERID_INDEX_6 REFERENCES PUBLIC.USER(USERID) ON DELETE CASCADE NOCHECK

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 2022-12-17
      • 2017-05-21
      • 1970-01-01
      相关资源
      最近更新 更多