我在一个表中写个触发器,用来产生一个自增数字,作为一个表的主关键字。
create or replace trigger tr_Patient_BeforeIns before insert on t_b_patient for each row
declare
v_Maxno number(12,0);
begin
select count(*) into v_Maxno from t_b_patientinfo;
:new.patient_no := to_char(v_Maxno+1);
end tr_Patient_BeforeIns;用ORAQUERY在C++BUILDER6。0中POST时提示说主关键字字段不准为空。
是不是没有执行触发器????用ADO就行。
create or replace trigger tr_Patient_BeforeIns before insert on t_b_patient for each row
declare
v_Maxno number(12,0);
begin
select count(*) into v_Maxno from t_b_patientinfo;
:new.patient_no := to_char(v_Maxno+1);
end tr_Patient_BeforeIns;用ORAQUERY在C++BUILDER6。0中POST时提示说主关键字字段不准为空。
是不是没有执行触发器????用ADO就行。
create sequence your_seq
nocycle
maxvalue 9999999999
start with 1;2.使用触发器实现自增:
create or replace trigger your_seq_tri
before insert on your_table1 for each row
declare
next_id number;
begin
select your_seq.nextval into next_id from dual;
:new.id := next_id;
end;
一般这种情况都采用序列的方式实现。
另外,你可以看看关于如何解决动态表问题的书籍,对你以后会大有帮助。
用序列实现自增是oracle所特有的