From 9b9e64e9ef9e5601d94c1e044f1175a1fa952301 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 16 Jun 2013 07:07:13 -0500 Subject: [PATCH] fixed Issue 1522:Trigger for primary key on oracle database --- VERSION | 2 +- gluon/dal.py | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index b032a6b7..20756c1a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.5.1-stable+timestamp.2013.06.16.06.56.07 +Version 2.5.1-stable+timestamp.2013.06.16.07.06.28 diff --git a/gluon/dal.py b/gluon/dal.py index 695b2d71..7d0190aa 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -3024,6 +3024,7 @@ class OracleAdapter(BaseAdapter): def create_sequence_and_triggers(self, query, table, **args): tablename = table._tablename + id_name = table._id.name sequence_name = table._sequence_name trigger_name = table._trigger_name self.execute(query) @@ -3035,18 +3036,19 @@ class OracleAdapter(BaseAdapter): diff_val NUMBER; PRAGMA autonomous_transaction; BEGIN - IF :NEW.id IS NOT NULL THEN + IF :NEW.%(id)s IS NOT NULL THEN EXECUTE IMMEDIATE 'SELECT %(sequence_name)s.nextval FROM dual' INTO curr_val; - diff_val := :NEW.id - curr_val - 1; + diff_val := :NEW.%(id)s - curr_val - 1; IF diff_val != 0 THEN EXECUTE IMMEDIATE 'alter sequence %(sequence_name)s increment by '|| diff_val; EXECUTE IMMEDIATE 'SELECT %(sequence_name)s.nextval FROM dual' INTO curr_val; EXECUTE IMMEDIATE 'alter sequence %(sequence_name)s increment by 1'; END IF; END IF; - SELECT %(sequence_name)s.nextval INTO :NEW.id FROM DUAL; + SELECT %(sequence_name)s.nextval INTO :NEW.%(id)s FROM DUAL; END; - """ % dict(trigger_name=trigger_name, tablename=tablename, sequence_name=sequence_name)) + """ % dict(trigger_name=trigger_name, tablename=tablename, + sequence_name=sequence_name,id=id_name)) def lastrowid(self,table): sequence_name = table._sequence_name