如何使用GENERATE_UNIQUE()函数生成的值作为外键?

时间:2015-04-08 13:50:05

标签: sql db2

我尝试使用本手册Generating Unique Values in DB2 Universal Database中的示例,但遇到了以下问题。

我有两张桌子,

CREATE TABLE PC_LIST (
        PC_ID CHAR(13) FOR BIT DATA NOT NULL, 
        PC_NAME VARCHAR(100) NOT NULL 

        PRIMARY KEY (ID)
);

第二张表

CREATE TABLE PC_DATA (
        ID CHAR(13) FOR BIT DATA NOT NULL, 
        PC_ID CHAR(13) FOR BIT DATA NOT NULL, 
        PC_NAME VARCHAR(100) NOT NULL 

        PRIMARY KEY (ID),
        FOREIGN KEY (PC_ID) REFERENCES PC_LIST(PC_ID)
);

我将记录添加到第一个表PC_LIST没有任何问题,并使用INSERT查询GENERATE_UNIQUE()内部功能,一切正常。 当我尝试将记录添加到第二个表并从PC_LIST.PC_ID复制值时,我收到错误Value "20150408131401000109000000 " is too long.. 当我添加如下投射时:CAST('20150408131401000109000000' AS CHAR(13) FOR BIT DATA)我收到The INSERT or UPDATE value of the FOREIGN KEY is not equal to any value of the parent key of the parent table

的错误

我做错了什么? 谢谢。

更新: 我用这个代码在PC_DATA

中插入数据
INSERT INTO PC_DATA 
(
    ID,
    PC_ID, 
    PC_NAME

) VALUES (GENERATE_UNIQUE(), CAST('20150408131401000109000000' AS CHAR(13) FOR BIT DATA) ,'anatoly-pc');

当然PC_ID我从PC_LIST表中获取了它。

0 个答案:

没有答案