Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DE1F2194FC for ; Sat, 19 Mar 2016 13:43:33 +0000 (UTC) Received: (qmail 86752 invoked by uid 500); 19 Mar 2016 13:43:33 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 86726 invoked by uid 500); 19 Mar 2016 13:43:33 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 86714 invoked by uid 99); 19 Mar 2016 13:43:33 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 19 Mar 2016 13:43:33 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 73DE72C1F5D for ; Sat, 19 Mar 2016 13:43:33 +0000 (UTC) Date: Sat, 19 Mar 2016 13:43:33 +0000 (UTC) From: "Danoja Dias (JIRA)" To: derby-dev@db.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (DERBY-6852) Allow identity columns to cycle (as defined in SQL:2003) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-6852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15202774#comment-15202774 ] Danoja Dias commented on DERBY-6852: ------------------------------------ I think the answer is already there. The idea of CYCLE is based on the assumption that there's been a prior cleanup in the table rows so that it will be possible to re-use ids that have been used previously. There is an assumption that there's been a prior cleanup in the table rows. This option will greatly enhance the usability of IDENTITY columns. Here if the cycle option is used, There must be IDENTITY columns. not a column. It means if the prior clean up in the table is not there, IDENTITY columns must be used. > Allow identity columns to cycle (as defined in SQL:2003) > -------------------------------------------------------- > > Key: DERBY-6852 > URL: https://issues.apache.org/jira/browse/DERBY-6852 > Project: Derby > Issue Type: Improvement > Components: SQL > Reporter: Peter Hansson > > Currently when an IDENTITY column reaches its maximum value it will produce an error. > For tables that are used as 'transaction logs' or 'event logs' it often makes sense to let the table automatically start over with the first identity value again when the max is reached. This would be similar to the CYCLE option on Oracle's SEQUENCE and as defined in SQL:2003. And Derby is probably used quite often for this purpose, I guess, perhaps even more than other RDBMSs. > At the moment every developer have to program their own logic for this. > I propose to introduce the CYCLE option. > The idea of CYCLE is based on the assumption that there's been a prior cleanup in the table rows so that it will be possible to re-use ids that have been used previously. If that is not the case - and a rollover happens - then a duplicate value error will occur. In this sense it can be argued that the CYCLE option will trade a _certain_ error for a _potential_ error. Most Derby users would possibly gladly accept such a bargain. In other words: This option will greatly enhance the usability of IDENTITY columns. > The current implementation of IDENTITY columns SQL grammar in Derby is a subset of the SQL:2003 standard which is the first of the SQL standards to define IDENTITY columns. Interestingly the standard also defines the CYCLE option but this was never implemented in Derby. Also see [SQL-99 and SQL-2003 features mapped to Derby|https://wiki.apache.org/db-derby/SQLvsDerbyFeatures] (scroll to T174). > In other words: The proposal is simply to implement CYCLE as defined in SQL:2003. -- This message was sent by Atlassian JIRA (v6.3.4#6332)