我正在 ORACLE 数据库表中插入一行,其中 主键ID是自增的。 和 我正在从该表中检索自动增量 ID。
如果很多人使用同一个表。 我可能会遇到消费者生产者问题 获取其他用户的ID。
SO 上的一些用户提到了获取这些增量 ID 基于connection这不会导致消费者生产者 问题:
只想用SO检查以下内容:
第一:
我能从下面的场景中获得准确的自动增量ID吗:
1) Two computer with in different subnet using DB.
2) Two computer wiht in same subnet using DB.
3) Two process using using DB connection.
4) Two thread uisng DB connection.
第二:
If my insert is:
Insert into Tables (ID,NAME,DESCRIPTION) values (DBNull,'Name','Description');
What should be my query to get the autoincremented ID generated for above
Insert.
C# related command will do much help :)
最佳答案
您应该使用返回子句:
declare
v_id TABLES.ID%TYPE;
begin
Insert into Tables (ID,NAME,DESCRIPTION)
values (seq.nextval,'Name','Description')
RETURNING id INTO v_id;
--
dbms_output.put_line(v_id);
end;
通过这种方式,您可以获得实际插入的 ID,而不必重新查询最高 ID 并希望它是正确的。
关于c# - 在 Oracle DB 中获取正确的自动递增 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500732/