我知道这不是最好的设计,但我们有一个数据库,我们必须适应它。 我们有一个表“自定义”:
CREATE TABLE CUSTDATA
(
TYPE NUMBER(11) GENERATED ALWAYS AS IDENTITY INCREMENT BY 1 START WITH 1 NOT NULL
, NUMBER NUMBER(5)
, VALUE01 NUMBER(11)
, VALUE02 NUMBER(11)
, TEXT01 VARCHAR2(50)
..
..
, CONSTRAINT CUSTDATA_PK PRIMARY KEY(
TYPE,
NUMBER));
所以,显然数据非常动态 类型1可以有2个数字和不同的值 类型5可以有20个数字...... 现在的问题是,这是数据的存储方式,在此表中。根据类型,可以清楚从值中获取哪些数据。
现在这就是我们所拥有的
我们希望将新表中的外键设置为此CUSTDATA表。 因此表XYZ在CUSTDATA.NUMBER上需要外键,其中TYPE = 3
我们如何实现这一目标? 我们尝试了对视图的视图和约束。 它不是美丽的,但如何处理这样的情况?
我们将针对每种类型制作视图,只需要您可以看到所需的值...
也许我们想要做的事情并不清楚。我们不希望将表格转换为新表格。我们希望将它与新类型一起使用。
create table xyz(
doesntmatterkey NUMBER(11)
,foreignNR
,CONSTRAINT xyz_PL PRIMARY KEY
(
doesntmatterkey
)
, CONSTRAINT ADRPOSTALADR_FK1 FOREIGN KEY
(
foreignNR
)
REFERENCES CUSTDATA
(
TYPE = 3000
NUMBER <- this is the real foreign column
)
);
答案 0 :(得分:0)
我通过添加新生成的列在其他数据库中完成了此操作:
str[strlen(str)]='\0';