CREATE TABLE TEST_TYPE (
TEST_TYPE_ID NUMBER(10) PRIMARY KEY ,
NAME VARCHAR2(256 BYTE) ,
DESCRIPTION VARCHAR2(256))
INSERT INTO "TEST_TYPE" VALUES ('1', 'School', 'description2');
INSERT INTO "TEST_TYPE" VALUES ('2', 'Military', 'description1');以上是表和表内的数据,我想请问下,如何写触发器就每一次插入,以这样的顺序School0000001,Military0000001这样自增,怎么写触发器,在学校只学了一点点而已,希望有写过的高手,帮我写下,谢谢了,在线等。
TEST_TYPE_ID NUMBER(10) PRIMARY KEY ,
NAME VARCHAR2(256 BYTE) ,
DESCRIPTION VARCHAR2(256))
INSERT INTO "TEST_TYPE" VALUES ('1', 'School', 'description2');
INSERT INTO "TEST_TYPE" VALUES ('2', 'Military', 'description1');以上是表和表内的数据,我想请问下,如何写触发器就每一次插入,以这样的顺序School0000001,Military0000001这样自增,怎么写触发器,在学校只学了一点点而已,希望有写过的高手,帮我写下,谢谢了,在线等。
create or replace trigger testTri
before insert test_type
for each row
begin
v_name varchar2;
begin
select youSeq.nextVal into v_name from dual;
:new.name : = :new.name||v_name;
//todo
end;
如何自增法,school和military
总有一个规则吧
也是,就是不知道写,我同事有说可以按test_type_id来写,这个主键,但是不懂,我没写过,希望有写过的帮我写下,谢谢了
name按一个school一个military的规律
交错
--建议一个先 主键系列表
CREATE TABLE TEST_xlh (
xlh NUMBER(10) PRIMARY KEY ,
NAME VARCHAR2(256 BYTE));
--再建立触发器
create or replace trigger testTri
before insert test_type
for each row
begin
v_name varchar2;
v_xlh number(12,0);
begin
--:new.name 是SCHOOL或military .....
--根据name 查找 TEST_xlh 表是否存在记录
slect xlh ,name into v_xlh ,v_name from test_xlh where ......
--如果存在则
if v_xlh >0 then
update test_xlh set xlh=xlh+1 where name=: v_name;
:new.name =v_name||to_char(v_xlh,'0000000');
else
insert into test_xlh (1,:new.name);
:new.name =v_name||'0000001';
end if
//todo
end;
现在重说一下,一下是表
CREATE TABLE "ASSOCIATE" (
"ASSOCIATE_ID" NUMBER(10) PRIMARY KEY ,
"ASSOCIATE_TYPE_ID" NUMBER(10) NULL,
"CODE_NAME" VARCHAR2(256 BYTE) NULL ,
"NAME" VARCHAR2(256 BYTE) NULL ,
"ADDRESS" VARCHAR2(256 BYTE) NULL )
上面ASSOCIATE_TYPE_ID是外键,我不写语句出来了,我简单说下CREATE TABLE "ASSOCIATE_TYPE" (
"ASSOCIATE_TYPE_ID" NUMBER(10) primary key ,
"NAME" VARCHAR2(256 BYTE) NULL ,
"DESCRIPTION" VARCHAR2(256 BYTE) NULL )
INSERT INTO "ASSOCIATE_TYPE" VALUES ('2', 'School', 'description2');
INSERT INTO "ASSOCIATE_TYPE" VALUES ('1', 'Military', 'description1');
两张表都有创建序列,我想问下就是根据界面添加ASSOCIATE时,ASSOCIATE TYPE可以选择NAME=SCHOOL或是NAMW=Military,选择其中一个,那么ASSOCIATE表的CODE_NAME就要自增变成SCHOOL00000001或是Military000000001每插入一次就自增,我不懂怎么写,麻烦有写过的帮我写,我不甚感激,谢谢了,在线等,急急急 只要insert不用update,谢谢;
before insert on ASSOCIATE
for each row
declare
v_name varchar2(256); begin
select name into v_name from ASSOCIATE_TYPE where associate_type_id=:new.associate_type_id ;
:new.code_name:=v_name||LPAD(:new.associate_id,8,'0');
end;