Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database DB2:尝试在交叉表中引用自动生成的字段_Database_Db2_Foreign Keys_Intersection - Fatal编程技术网

Database DB2:尝试在交叉表中引用自动生成的字段

Database DB2:尝试在交叉表中引用自动生成的字段,database,db2,foreign-keys,intersection,Database,Db2,Foreign Keys,Intersection,我正在从事一个使用DB2的项目,试图创建一个小型库存系统。目前,我和我的团队正在寻找解决我们在创建带有自动生成字段的表时遇到的障碍的答案。我提供了一个create语句示例,让您了解我们的工作内容: “创建表资源清册( PRODUCT_ID INT NOT NULL始终作为标识生成(从1递增1最小值开始1无最大值无循环无缓存顺序), 产品名称字符(100)不为空, 描述字符(100), 单价小数(6,2), 数量整数 ) 数据捕获无; 我们遇到的问题是当我们将测试数据插入数据库时(运行ddl时没有

我正在从事一个使用DB2的项目,试图创建一个小型库存系统。目前,我和我的团队正在寻找解决我们在创建带有自动生成字段的表时遇到的障碍的答案。我提供了一个create语句示例,让您了解我们的工作内容:

“创建表资源清册( PRODUCT_ID INT NOT NULL始终作为标识生成(从1递增1最小值开始1无最大值无循环无缓存顺序), 产品名称字符(100)不为空, 描述字符(100), 单价小数(6,2), 数量整数 ) 数据捕获无;

我们遇到的问题是当我们将测试数据插入数据库时(运行ddl时没有错误;插入测试数据时没有错误)我们可以在主表中查看自动生成字段的值,但不能在将该值用作外键的交集表中查看。我们使用的与库存表相关的交集表示例如下:

创建表( ITEM_LINE INT NOT NULL始终作为标识生成(以10递增1最小值10无最大值无循环无缓存顺序开始),
付款类型字符(15), 备注(70), 接收数量整数, 供应商ID字符(4)不为空, 产品ID INT, 货物识别号INT ) 数据捕获无;

插入可接收项值(默认值、'DISCOVER'、'Success',9、'1000',默认值、默认值);

当我们查看数据时,没有看到任何空值;我们只是没有看到交集表中任何外键字段的任何值(在本例中为PRODUCT_ID和shipping_ID)

是否有一种特殊的方法将数据插入到交集表中,从而允许主键的值也在交集表中表示


非常感谢您的时间。我将积极回答您可能提出的任何问题。

要使列成为外键,需要的不仅仅是为同一列命名。事实上,名称并不重要。重要的是对其定义FK约束:

CREATE TABLE RECEIVABLES ( 
  ITEM_LINE INT NOT NULL Generated always as identity 
   (start with 10 
    increment by 1 
    minvalue 10 
    no maxvalue 
    no cycle 
    no cache order),
  PAYMENT_TYPE CHAR(15), 
  REMARKS CHAR(70), 
  RECEIVED_QUANTITY INTEGER, 
  VENDOR_ID CHAR(4) NOT NULL, 
  PRODUCT_ID INT, 
  SHIPMENT_ID INT, 
  CONSTRAINT inv_fk FOREIGN KEY (product_id) 
     REFERENCES inventory (product_id),
  CONSTRAINT shp_fk FOREIGN KEY (shipment_id) 
     REFERENCES shimpments (shipment_id)
) DATA CAPTURE NONE;
在插入后,我希望在原始表中看到空值;因为Receiables中的product_id和Shipment_id都不是用
NOT null
定义的。在我发布的表上运行相同的插入操作时,FK列中的值仍然为空

生成的ID仅在主表中生成。插入到应收款中时必须指定该值

现在,假设您刚刚在库存中插入了一行,并且希望在应收账款中插入引用该行的行。在插入应收账款之前,您必须询问DB为库存中的行生成的ID

IDENTITY\u VAL\u LOCAL()
函数就是这样一种方法