在触发器中使用多个序列来生成唯一标识

时间:2018-05-28 14:42:56

标签: sql oracle triggers sequence

我在设备表中输入行,如果是天线,我想添加前缀' A'对于天线(天线具有脚编号1到4),该前缀具有编号序列。 此外,如果它不是天线,它将采用脚数-1并且前缀为“E' E'用于设备。

*使用ORACLE db。

new kendo.data.DataSource({
    transport: {
        read: {
                dataType: "json",
                url: "MainServlet",
                data:{event:"Test"},
        }
    },
    schema: {
        parse: function(data) {
            return (data && data.trucks ? data.trucks : []);
        }
    }
});

1 个答案:

答案 0 :(得分:1)

我没有看到任何问题...

SQL> create table eq (antenna_foot_number number, eq_id varchar2(20))

Table created.

SQL> create sequence inv_seq_eq_toy;

Sequence created.

SQL> create sequence inv_seq_eq_antenna_toy;

Sequence created.

SQL> create or replace trigger inv_seq_eq_toy_t
  2    before insert on eq
  3    referencing new as new old as old
  4  for each row
  5    when (new.antenna_foot_number in (-1,1,2,3,4))
  6  begin
  7      if :new.antenna_foot_number = -1 then
  8         :new.eq_id := 'E'|| inv_seq_eq_toy.nextval;
  9      else
 10         :new.eq_id := 'A'|| inv_seq_eq_antenna_toy.nextval;
 11      end if;
 12  end;
 13  /

Trigger created.

SQL> insert into eq(antenna_foot_number) values (1);

1 row created.

SQL> insert into eq(antenna_foot_number) values (-1);

1 row created.

SQL> select * from eq;

ANTENNA_FOOT_NUMBER EQ_ID
------------------- --------------------
                  1 A1
                 -1 E1

SQL>

你是否只是吹牛,你设法创造了一个你想要的触发器?如果是这样,那么,你成功了。