我目前正在进行一项研究,想知道当前存在哪些方法或算法来管理将多用户数据插入两个关系表(通过主键和外键进行关联)。
在主键表中,
-主键可以是自动增量ID,也可以是非自动增量ID。
在外键表中
-每次将新记录插入主键表中时,都必须将2条记录插入外键并指向新记录的主键
目前,我正在这样做。
1.我有2个表(带非增量主键表)(外键表)
2.我有另一个表(计数器)存储最大的主键值
3.每次用户插入新记录时,它将读取最大主键值+ 1
4.然后将开始事务并使用commit语句分别将三个记录插入主键表和外键表中
我担心的是市场上有哪些替代品?
如果我正确理解了您的问题,则您担心确定需要在子记录中使用的刚刚插入的父记录标识值。有多种方法可以完成此操作(我假设在这里我们谈论的是针对Linux,Unix和Windows的DB2,因为您没有指出DB2的版本和平台)。
如果使用IDENTITY
属性定义父PK列,则可以使用内置函数引用刚生成的标识值IDENTITY_VAL_LOCAL()
。
如果使用aSEQUENCE
生成键值,则NEW VALUE FOR myseq
在插入父表和PREVIOUS VALUE FOR myseq
子表时将使用引用。
最后,您可以使用称为“数据更改表引用”的功能,该功能可让您获取DML语句的结果:
SELECT yourpk_column FROM FINAL TABLE ( INSERT INTO yourparent_tab... )
您甚至可以使用一条语句(在此示例person.person_id
中定义为IDENTITY
)将其插入父表和子表中:
WITH parent (person_id) AS (
SELECT person_id FROM FINAL TABLE (
INSERT INTO person (first_name, last_name) VALUES ('John', 'Doe')
)
)
SELECT * FROM NEW TABLE (
INSERT INTO person_phone (person_id, type, number)
SELECT person_id, 'Office', '555-555-1234' FROM parent
UNION ALL
SELECT person_id, 'Home', '555-555-6789' FROM parent)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句