如何在H2数据库中查看我的表列是否为外键

Nom*_*him 3 database h2

我创建了两个表user和contact。用户是父表,联系人是子表。我将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),
);
Run Code Online (Sandbox Code Playgroud)

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

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
);
Run Code Online (Sandbox Code Playgroud)

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

显示联系人的列;我认为红色区域应该向我显示了userId是外键

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

The*_*ler 7

是的,show您使用的命令不会显示外键。您所创建的外键有,不过。

要检查外键是否存在,您可以查询INFORMATION_SCHEMAas:

select * from information_schema.constraints
  where table_name = 'CONTACT'
    and column_list = 'USERID';
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE PUBLIC.CONTACT添加约束PUBLIC.FK_CON_USERID外键(USERID)INDEX PUBLIC.FK_CON_USERID_INDEX_6参考PUBLIC.USER(USERID)删除级联节点