summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/db/backends/oracle/base.py20
1 files changed, 8 insertions, 12 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index db16307866..625d95051a 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -669,19 +669,15 @@ def _get_sequence_reset_sql():
# TODO: colorize this SQL code with style.SQL_KEYWORD(), etc.
return """
DECLARE
- startvalue integer;
- cval integer;
+ table_value integer;
+ seq_value integer;
BEGIN
- LOCK TABLE %(table)s IN SHARE MODE;
- SELECT NVL(MAX(%(column)s), 0) INTO startvalue FROM %(table)s;
- SELECT "%(sequence)s".nextval INTO cval FROM dual;
- cval := startvalue - cval;
- IF cval != 0 THEN
- EXECUTE IMMEDIATE 'ALTER SEQUENCE "%(sequence)s" MINVALUE 0 INCREMENT BY '||cval;
- SELECT "%(sequence)s".nextval INTO cval FROM dual;
- EXECUTE IMMEDIATE 'ALTER SEQUENCE "%(sequence)s" INCREMENT BY 1';
- END IF;
- COMMIT;
+ SELECT NVL(MAX(%(column)s), 0) INTO table_value FROM %(table)s;
+ SELECT NVL(last_number - cache_size, 0) INTO seq_value FROM user_sequences
+ WHERE sequence_name = '%(sequence)s';
+ WHILE table_value > seq_value LOOP
+ SELECT "%(sequence)s".nextval INTO seq_value FROM dual;
+ END LOOP;
END;
/"""