微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在具有 2 列主键的表的 H2 数据库中定义外键约束

如何解决在具有 2 列主键的表的 H2 数据库中定义外键约束

我的表有 2 列主键。 我不会从其他表在该表上创建外键。

CREATE TABLE MESSAGING.RECIPIENT (
TYPE VARCHAR NOT NULL,SERIAL_NUMBER VARCHAR NOT NULL,CONSTRAINT PK_RECIPIENT PRIMARY KEY (TYPE,SERIAL_NUMBER)
);

我正在尝试类似的事情:

CREATE TABLE MESSAGING.MESSAGE (
    ID VARCHAR NOT NULL,RECIPIENT_ID BIGINT,MESSAGE_VALID_FROM TIMESTAMP,CONSTRAINT PK_MESSAGE PRIMARY KEY (ID),CONSTRAINT MESSAGE_FK FOREIGN KEY (RECIPIENT_ID,RECIPIENT_ID) REFERENCES MESSAGING.RECIPIENT(TYPE,SERIAL_NUMBER)
);

但似乎不起作用 甚至有可能吗?

解决方法

如果我正确地得到了你的怀疑。

你可以这样做:

CREATE TABLE MESSAGING.RECIPIENT (
TYPE VARCHAR NOT NULL,SERIAL_NUMBER VARCHAR NOT NULL
);

ALTER TABLE MESSAGING.RECIPIENT ADD PRIMARY KEY (TYPE,SERIAL_NUMBER);

在另一个表中要引用MESSAGE.RECIPIENT,您必须添加两个字段才能获得外键;你可以这样做:

CREATE TABLE MESSAGING.MESSAGE (
    ID VARCHAR NOT NULL,RECIPIENT_TYPE VARCHAR,RECIPIENT_SERIAL_NUMBER VARCHAR,MESSAGE_VALID_FROM TIMESTAMP
);

ALTER TABLE MESSAGING.MESSAGE ADD PRIMARY KEY(ID);
ALTER TABLE MESSAGING.MESSAGE ADD FOREIGN KEY(RECIPIENT_TYPE,RECIPIENT_SERIAL_NUMBER) REFERENCES MESSAGING.RECIPIENT(TYPE,SERIAL_NUMBER);

干杯。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。