问题标签 [auto-increment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7991 浏览

sqlite - 从 Webkit 的 HTML5 数据库存储中获取插入 ID

Webkit(至少在 iPhone 和 Safari 上)通过 SQLite 支持 HTML5 的数据库存储。

我试图弄清楚如何最好地获取以下事务的插入 ID(数据库中有一个自动增量字段“id”)。

0 投票
4 回答
991 浏览

sql-server-2005 - 我应该如何在 SQL Server 2005 中实现“自动编号”字段?

我知道 IDENTITY 字段,但我有一种感觉,我无法使用一个来解决我的问题。

假设我有多个客户。每个客户都有多个订单。每个客户都需要为他们的订单按顺序编号,具体到他们自己。

示例表结构:

此表的一些示例行将是:

我知道天真的方法是将 MAX ClientOrderID 用于任何客户端并将该值用于 INSERT,但这会受到并发问题的影响。我正在考虑使用事务,但我不太确定可用于此的最广泛的隔离范围。我将使用 LINQ to SQL,但我觉得这无关紧要。

0 投票
3 回答
7873 浏览

mysql - 按组自动递增

MySQL(特别是 5.0)有没有办法让 auto_increment 字段的值基于分组列?

例子:

我不想通过任何“疯狂”的方法来实现这一点,但如果有必要的话。

0 投票
7 回答
73075 浏览

sql - SQL Server 标识列值从 0 而不是 1 开始

我遇到了一个奇怪的情况,我的数据库中的一些表的 ID 从 0 开始,即使 TABLE CREATE 具有 IDENTITY(1,1)。对于某些表是这样,但对于其他表则不然。它一直有效到今天。

我试过重置身份列:

但是新记录从 0 开始。我尝试对所有表都这样做,但有些仍然从 0 开始,有些从 1 开始。

任何指针?

(我正在使用带有高级服务的 SQL Server Express 2005)

0 投票
1 回答
554 浏览

mysql - MySQL中的作用域/复合代理键

这是我当前数据库的摘录(更改了表名以便于理解):

Whereid总是一个代理键,用auto_increment.

我想让代理键Pet.id被“限定”Pet.ownerFK或换句话说,有一个复合键[ownerFk, id]作为我的最小键。我希望表的行为如下:

我目前正在使用MyISAM 的此功能,其中“您可以AUTO_INCREMENT在多列索引中的辅助列上指定。在这种情况下,该AUTO_INCREMENT列的生成值计算为MAX(auto_increment_column) + 1 WHERE prefix=given-prefix。当您要将数据放入有序组时,这很有用。”

但是,由于各种(也许是显而易见的)原因,我想从 MyISAM 切换到 InnoDB,因为我需要在某些地方进行事务。

有什么方法可以用InnoDB达到这个效果吗?

我发现了一些关于这个问题的帖子,其中许多建议在插入之前对表进行写锁定。我对此不是很熟悉,但是对于这个来说,这不会是一个表写锁的大修吗?如果可能的话,我宁愿考虑使用写安全事务(我以前从未做过)——将 aOwner.current_pet_counter作为辅助字段。

所以另一个可接受的解决方案是......

实际上,我不需要“作用域”ID 成为实际密钥的一部分。我实际的数据库设计使用了一个单独的“永久链接”表,它使用了这个“功能”。我目前使用它作为丢失交易的解决方法。我想到了以下替代方案:

我还没有在 MySQL 中使用过 transactions/transactionvars,所以我不知道这个是否会有严重的问题。 注意:我不想重复使用id曾经给宠物的 s。这就是为什么我不使用MAX(). 这个解决方案有什么注意事项吗?

0 投票
3 回答
1564 浏览

sql - 如何从 CSV 或 XLS 将数据导入 SQL,根据 DB 中的当前记录自动递增字符串字段?

我需要将数据从 Excel 导入 SQL 2000 db。

我需要从工作表中导入 6 个字段,并增加一个字符串字段,其中包含一个填充为 5 个前导零字符的整数。该字段不是主键,数据库不会自动填充它。此外,如果有帮助,数据库允许将此字段输入为 NULL,然后在有帮助时更改。

我可以使用菜鸟 DTS 和插入语句的组合将数据放入我需要的表中,并手动更新我今天必须做的 20 条记录的字符串字段,但下周我需要导入大约 1000 条记录。

我是否应该编写一个 C#/ADO.net 应用程序来执行此操作,[请记住我是新手,所以这需要我几天时间 :-) ] 还是有一种方法可以使用 DTS 增加字符串字段直接或插入语句中的某种循环?

在此先感谢 G

编辑:我插入的表构造如下,我需要更新“cedeviceid”、“vanwarehouse”、“username”、“devicesimnumber”、“UserGroup”和“ServiceMgr”。从 Excel 表。“sendercode”是我需要增加的字符串

CREATE TABLE [dbo].[mw_gsmprofile](
[cedeviceid] varchar NOT NULL,
[mainwarehouse] varchar NULL,
[vanwarehouse] varchar NULL,
[username] varchar NULL,
[sendercode] varchar NULL,
[devicesimnumber] varchar NULL,
[usersupportgsm] [int] NULL,
[userisonline] [int] NULL,
[onlinedate] varchar NULL,
[lastsentsequenceno] [int] NULL,
[lastsentdate] varchar NULL,
[lastreceivedsequenceno] [int] NULL,
[lastreceiveddate] varchar NULL,
[EnableAutoDownloading] [int] NULL,
[EnableCompressFile] [int] NULL,
[LogonUserName] varchar NULL,
[LogonPassword] varchar NULL,
[LogonDomain] varchar NULL,
[UserGroup] varchar NULL,
[UseStorageCard] [int] NULL,
[SMSMapProfile] varchar NULL,
[SMPPClientFlag] [int] NULL,
[LASTUPDATE] varchar NULL,
[ServiceMgr] varchar NULL,
[VanLocation] varchar NULL,
[OnHireWarehouse] varchar NULL,
[OnHireWhsRepType] [int] NULL,
[HireDepotWarehouse] varchar NULL,
[HireDepotWhsRepType] [int] NULL,
约束 [PK_mw_gsmprofile] 主键集群

[cedeviceid] ASC
)WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

样本数据

cedeviceid,vanwarehouse, username, devicesimnumber, UserGroup, ServiceMgr
3431, 999, INSTALL TEAM 1,,INSTAL, AHOA
3441, 999, INSTALL TEAM 2,,INSTAL, AHOA
3451, 999, INSTALL TEAM 3,,INSTAL, AHOA
3461, 999 , 安装团队 4,,安装, AHOA
3471, 999, 安装团队 5,,安装, AHOA
3472, 999, 安装团队 6,,安装, AHOA

0 投票
9 回答
11946 浏览

ms-access - Access 的自动编号(增量)是否保证增加?

对于特定表,我将 ID 字段设置为自动编号(增量)。如果我快速连续向该表添加 5 行,是否保证每行的 ID 都比上一个大?例如,如果一些较早的值已被删除,自动编号是否会从 1 重新开始?

0 投票
3 回答
2627 浏览

mysql - 使用当前的 auto_increment 值作为同一 INSERT 查询中另一个字段的基础 - 这在 MySQL 中可能吗?

在我的表(MySQL)中,我有这些字段:

id - 主要的,自动增量

hash- base 36 表示id

我想一次填充这两个字段,使用存储过程来计算 id 在 INSERT 上接收到的值的 base 36 等效值。像这样的东西:

显然这是行不通的,但我希望它能说明我正在努力实现的目标。这可能吗?如果可以,怎么做?

注意:我只想使用一个查询,所以 last_insert_id 没有帮助(至少据我所知)。

0 投票
11 回答
712664 浏览

postgresql - PostgreSQL 自动增量

我正在从 MySQL 切换到 PostgreSQL,并且想知道如何执行自动增量值。我在 PostgreSQL 文档中看到了一个数据类型“serial”,但在使用它时出现语法错误(在 v8.0 中)。

0 投票
2 回答
6349 浏览

sql - SQL Server:在存储过程中检索自动递增的 ID?

我的数据库有一个带有自动递增主键标识“ID”的父表和一个普通的“TIMESTAMP 列”。我有一个外键引用父“ID”列的子表。

我想编写一个将新列插入父数据库和子数据库的存储过程。如何将子“ID”列设置为等于新的自动递增父“ID”列?这是否需要单独的:

还是有其他方法?