首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MyGeneration、doodads和Oracle,是否可以实现“自动编号主键”方案?

使用MyGeneration、doodads和Oracle,是否可以实现“自动编号主键”方案?
EN

Stack Overflow用户
提问于 2010-04-25 04:51:49
回答 2查看 604关注 0票数 1

使用MyGeneration、doodads和Oracle,是否可以实现“自动编号主键”方案?

问题事实:我正在使用Oracle XE。我已经实现了下表和触发器:

代码语言:javascript
复制
CREATE TABLE  "USERS" 
(   
    "ID" NUMBER(38,0), 
    "USER_NAME" VARCHAR2(50), 
    "PASSWORD" VARCHAR2(50), 
    "EMAIL" VARCHAR2(100), 
     CONSTRAINT "USERS_PK" PRIMARY KEY ("ID") ENABLE
)
/

CREATE OR REPLACE TRIGGER  "BI_USERS" 
  before insert on "USERS"               
  for each row  
begin   
    select "USERS_SEQ".nextval into :NEW.ID from dual; 
end; 

/
ALTER TRIGGER  "BI_USERS" ENABLE
/

MyGeneration / Doodads创建了以下存储进程...

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE "XXX"."PI_USERS"
(
    p_ID IN USERS.ID%type,
    p_USER_NAME IN USERS.USER_NAME%type,
    p_PASSWORD IN USERS.PASSWORD%type,
    p_EMAIL IN USERS.EMAIL%type
)
IS
BEGIN


    INSERT
    INTO USERS
    (
        ID,
        USER_NAME,
        PASSWORD,
        EMAIL
    )
    VALUES
    (
        p_ID,
        p_USER_NAME,
        p_PASSWORD,
        p_EMAIL
    );
END PI_USERS;

序列和触发器组合工作正常。C#中的BusinessEntity类不接收新ID。

有什么推荐的方法允许调用代码接收新的记录ID吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-25 08:40:31

我还没有使用Doodads,所以不确定这是否是它所期望的,但是如果您像下面这样使用returning子句更改过程,并使p_ID参数in out,则p_ID参数应该在执行后保存新添加的ID。

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE "XXX"."PI_USERS"
(
    p_ID IN OUT USERS.ID%type,
    p_USER_NAME IN USERS.USER_NAME%type,
    p_PASSWORD IN USERS.PASSWORD%type,
    p_EMAIL IN USERS.EMAIL%type
)
IS
BEGIN


    INSERT
    INTO USERS
    (
        ID,
        USER_NAME,
        PASSWORD,
        EMAIL
    )
    VALUES
    (
        p_ID,
        p_USER_NAME,
        p_PASSWORD,
        p_EMAIL
    )
    RETURNING ID INTO p_ID;

END PI_USERS;
票数 2
EN

Stack Overflow用户

发布于 2011-04-06 23:14:11

为什么不使用序列呢?如果您更喜欢使用TAPI,我仍然认为ID和WHO列在序列的触发器中是最好的。问题是需要一个纯的、密集的序列,其中没有跳过的数字吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2706082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档