标签: auto-increment

使用 SQLAlchemy 中的自定义逻辑自动递增属性

我有一个简单的“发票”类,其中包含一个“编号”属性,当用户保存发票时,应用程序必须为其分配该属性。有一些限制:

1) 应用程序是一个(瘦)客户端-服务器应用程序,所以无论分配数字,都必须注意冲突
2)发票也有一个“版本”属性,所以我不能使用简单的 DBMS 级别的自动递增字段

我正在尝试使用自定义类型来构建它,该类型会在每次保存发票时启动。每当 process_bind_param 使用 None 值调用时,它将调用某种单例来确定数量并避免冲突。这是一个体面的解决方案吗?无论如何,我遇到了问题..这是我的自定义类型:

class AutoIncrement(types.TypeDecorator):
   impl = types.Unicode

   def copy(self):
       return AutoIncrement()

   def process_bind_param(self, value, dialect):
       if not value:
           # Must find next autoincrement value
           value = "1" # Test value :)
       return value
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,当我保存一个 Invoice 并且 AutoIncrement 将“1”设置为其编号的值时,Invoice 实例不会使用新编号更新。这是预期的吗?我错过了什么吗?非常感谢您的时间!

(Python 2.6 上的 SQLA 0.5.3,使用 postgreSQL 8.3)

编辑: Michael Bayer 告诉我这种行为是意料之中的,因为 TypeDecorators 不处理默认值。

python sqlalchemy auto-increment

1
推荐指数
1
解决办法
1642
查看次数

使用 HSQLDB (2.2.8) + DDLUtils 自动递增

我想将 HSQLDB 用作嵌入式数据库,但无法让它自动递增

据我了解,[CALL] IDENTITY()可以用来获取最后一个主键值。然而,通过 iBatis 和 HSQLDB 的实验DatabaseManagerSwing不断返回 0 值。

如何获得自动增量以与 HSQLDB 一起使用?

编辑:

我没有提到我使用DDLUtils来自动生成表。以下适合 HSQLDB:

<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database.dtd">

<database name="testdb">

    <table name="users">
        <!-- using autoincrement attribute below causes
        "primary key already exists" exception -->
        <column name="id" type="INTEGER" primaryKey="true" />
        <column name="username" type="VARCHAR" size="30" />
        <column name="password" type="VARCHAR" size="100" />
    </table>

</database>
Run Code Online (Sandbox Code Playgroud)

此外,这里是用于域类的 iBatis SQL 映射:

<insert id="insertUser" parameterClass="user">
    <selectKey keyProperty="id" resultClass="int">
        CALL IDENTITY()
    </selectKey>
INSERT …
Run Code Online (Sandbox Code Playgroud)

java ibatis hsqldb auto-increment ddlutils

1
推荐指数
1
解决办法
8478
查看次数

使用 unnest 函数插入 - 跳过序列列中的数字

我试图在插入中使用“unnest”功能,
这样做时,序列会为每个插入跳过一个数字,
请帮我解决这个问题...

mydb=# \d tab1  
                         Table "public.tab1"  
 Column |  Type   |                     Modifiers                         
--------+---------+---------------------------------------------------  
 id     | integer | not null default nextval('tab1_id_seq'::regclass)  
 col1   | integer |   
 col2   | integer |   
Indexes:  
    "tab1_pkey" PRIMARY KEY, btree (id)  

mydb=# insert into tab1(id,col1,col2) values (nextval('tab1_id_seq'),1,unnest(array[4,5]));  
INSERT 0 2  
mydb=# select * from tab1;  
 id | col1 | col2   
----+------+------  
  1 |    1 |    4  
  2 |    1 |    5  
(2 rows)  

mydb=# insert into tab1(id,col1,col2) values (nextval('tab1_id_seq'),2,unnest(array[4,5]));  
INSERT 0 2  
mydb=# select * …
Run Code Online (Sandbox Code Playgroud)

arrays postgresql function auto-increment

1
推荐指数
1
解决办法
6206
查看次数

从Backup .SQL源文件创建新的MySql架构重置自动增量id列?

我正在开发一种database schema我希望向客户提供的大型产品.

我是MySql数据库管理的新手.如何还原.sql架构的文件,以便它还将所有自动增量ID列重置为0Null重新生成.

我实际上恢复了一个新的模式名称并插入了一个测试记录,发现自动id列在最后一个模式名称中从它们离开的位置开始递增.

我如何在MySql数据库建模中解决这个问题?

我希望始终能够为付费客户"分拆"我当前版本数据模型的精确副本.

谢谢.

mysql schema auto-increment

1
推荐指数
1
解决办法
1829
查看次数

更改 mssql 列以添加没有 t-sql 的自动增量

可以更改现有的 MSSQL 列以向该列添加自动增量选项(它是主键,但不是自动增量),而无需编写 t-sql 代码,而只是使用更改策略?

我可以用 t-sql 找到解决方案,但我需要没有它。

sql sql-server auto-increment identity-column

1
推荐指数
1
解决办法
9869
查看次数

自动递增会发生什么,如果我们在 SQL 中删除一行

这是一个初学者的问题。因为我现在无法访问 Microsoft SQL Server。我的问题是关于自动增量功能。

http://s10.postimg.org/lev8tvu7t/image.jpg

看看上表就知道了。假设 id 字段在 Microsoft SQL Server 中提供了一个 Auto Increment 选项。如果我删除第三行会发生什么?我的意思是编号会发生什么?ID 103会自动改成102吗??或者它会保持不变,省略“102”数字?

另外我还有一个问题...

http://s30.postimg.org/7exbjw7r5/image.jpg

在上表中,假设我已经截断了所有字段。之后,我插入了另一组值。ID (Auto Increment ON) 字段会发生什么。新输入的详细信息的 ID 是什么?它会是 105、106 等等,还是会从 1 重新开始??(在显示的示例中,ID 从 100 开始,只是认为它从 1 开始)。

我也想知道在这两种情况下会发生什么。(即,1. 截断表和 2. 删除所有表详细信息)。

sql-server auto-increment

1
推荐指数
1
解决办法
4414
查看次数

如何找到所有的AUTO_INCREMENT表?

我需要在具有 AUTO_INCREMENT 列的 MySQL 数据库模式中找到所有表。

我需要能够将所有这些表设置为一个大的 AUTO_INCREMENT 值,以免与将添加到(百万?)的基本数据重叠。

我知道这是一个坏主意,但我不希望每个表的基础数据超过 1000 个项目。

mysql auto-increment

1
推荐指数
1
解决办法
785
查看次数

SQL Server AUTO_INCREMENT 错误

  • 接口:HeidiSQL
  • 数据库:SQL Server

我正在尝试创建表保留ID( int) 列作为主键以及 Auto_Increment。

但是 SQL Server 抛出错误 102:

'Auto_increment' 附近的语法不正确。

请帮忙。谢谢。

database primary-key auto-increment sql-server-2008 heidisql

1
推荐指数
1
解决办法
1万
查看次数

SQLITE_ERROR - SQL 错误或缺少数据库(“AUTOINCREMENT”附近:语法错误)

我正在尝试在我新创建的 SQLite 数据库中创建一个表。出于某种原因,我收到了 SQLException:

try {
        logger.debug("Trying to create table powerperms_permissions if not exists");
        statement.execute("CREATE TABLE IF NOT EXISTS powerperms_permissions ( "
                + "id INT NOT NULL AUTOINCREMENT,"
                + "uuid VARCHAR ( 64 ) NOT NULL,"
                + "permission VARCHAR ( 64 ) NOT NULL,"
                + "world VARCHAR ( 32 ) NULL,"
                + "PRIMARY KEY ( id ) );");
    } catch (SQLException e) {
        logger.error("Couldn't create permissions table",e);
    }
Run Code Online (Sandbox Code Playgroud)

投掷

[07:49:17 ERROR]: [PowerPerms] Couldn't create permissions table
java.sql.SQLException: [SQLITE_ERROR] SQL error …
Run Code Online (Sandbox Code Playgroud)

java sql sqlite auto-increment

1
推荐指数
1
解决办法
4858
查看次数

BigQuery 中的自增字段

我正在使用 Google BigQuery WebUI 创建一个空表,并且我希望有一个每次向表中添加记录时自动递增的字段。在 MYSQL 中,它看起来像这样

CREATE TABLE smoker_info (
ID int NOT NULL AUTO_INCREMENT,
meat_type string,
kilos varchar(255), 
PRIMARY KEY (ID) );
Run Code Online (Sandbox Code Playgroud)

有没有办法ID在 BigQuery 中创建字段?

我的计划是使用该smoker_info表来保存有关我正在吸食的肉的一般信息,并且我将使用另一个表来保存温度读数。

谢谢

auto-increment google-bigquery

1
推荐指数
1
解决办法
3299
查看次数