问题描述
我的表有 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);
干杯。