如何利用Datawindow.net提取Sequence数据

为了实现数据的统一管理,防止出现唯一号重复的情况,我个人认为最有效的方法莫过于使用Sequence(我使用的是Oracle),为了实现自动增长还可以创建一个触发器,让触发器自动取出Sequence的Nextval填入Id中.这个时候,数据窗口可以不提取主键字段,直接更新就可以生成数据,参考触发器如下:

CREATE OR REPLACE TRIGGER SUMMARY_LIST_BIR
BEFORE INSERT
ON SUMMARY_LIST
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
when (NEW.SUMMARY_LIST IS NULL)
BEGIN
   select SEQ_SUMMARY_LIST.nextVal INTO :NEW.SUMMARY_LIST from dual;
END;

 

注:这个触发器是在ID为空的情况下才触发.

 

但是,可能有这样一种情况,那就是比如部门和人员是1对多的情况,如果要同时增加部门和人员的情况是,由于开始还没有生成部门编号,这样人员自然就没有办法直接对找到部门中去,常规的办法可以用ADO.net通过SQL语句提取数据,但是那样比较麻烦,我们现在用了Datawindow的情况下能不能使用数据窗口来提取呢?

答案是肯定的,事实上也非常简单,你可以创建一个数据窗口,然后通过语法的方式写入查询语句,如:

select seq_summary_list.nextval from dual

然后保存该数据窗口,提取数据的时候怎么提取呢?

可以使用Datastore,例子代码如下:


        //提取编号
        Sybase.DataWindow.DataStore ds_seq = new Sybase.DataWindow.DataStore();
        ds_seq.LibraryList = Server.MapPath("../..") + @"/pbl/summary.pbl";
        ds_seq.DataWindowObject = "d_work_summary_seq_nextval";
        ds_seq.SetTransaction(trans.SQLCA);
        ds_seq.Retrieve();

        int iSummaryID = (int)ds_seq.GetItemDecimal(1, 1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值