在 sql 中插入语句,其中一个字段设置为自动编号

Posted

技术标签:

【中文标题】在 sql 中插入语句,其中一个字段设置为自动编号【英文标题】:Insert statement in sql with one field set as autonumber 【发布时间】:2013-03-13 03:56:09 【问题描述】:

我的表分支中有三列,即 id(Autonumber)、code(text)、desc(text)。我正在尝试执行此 sql insert into branch(code,desc) values('"+b+"','"+c+"')"; 这给了我错误语法错误..请帮助

【问题讨论】:

不要在 JSP 中嵌入 Java 代码。如果您不想遭受 SQL 注入攻击,请了解预准备语句。 【参考方案1】:

您的某个列的名称为DESC,即Reserved Keyword。为了能够正常执行INSERT 语句,您需要使用brackets 分隔列,例如

insert into branch(code,[desc]) values ('"+b+"','"+c+"')";
MSACCESS Reserved Keywords List

还有一点,你的代码很容易出现SQL Injection。请对查询进行参数化。

【讨论】:

谢谢,但我没有从 5 开始,我怎样才能让它从 1 开始? 呃,从 1 开始是什么意思? 您的意思是您有一个列名no,它被设置为auto_increment 字段并且您希望它从1 开始?如果是这样,执行这个ALTER TABLE branch ALTER COLUMN no COUNTER(1,1) 我的意思是我的表有 id 作为自动增量,当我输入我的第一条记录时,记录被添加但 id 号是 5。如何让它从 1 开始? Alter table ... Counter(1,1) 在 MS Access 中的表上会弄乱种子,你最终会得到重复。这只是在一张空桌子上的一个好主意,一旦桌子是空的,你也可以压缩和修复,这将安全地重置所有东西,无论如何都应该完成。然而,真正的问题是你为什么关心自动编号包含的内容?当你试图让自动编号有意义时,沿着这些思路思考会导致进一步的悲伤。自动编号永远不适合序列号,它只是一个唯一的键,如果你这样乱七八糟,甚至不适合。

以上是关于在 sql 中插入语句,其中一个字段设置为自动编号的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL数据库中使用自动编号是哪个字段类型

在sql数据库,我插入一条数据有误,编号错了,和前面的重复,要怎么修改呢?

数据库MYSQL中,如果有个字段是自增型,如何写插入语句?

sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半

求一条关于字段名称取值的SQL语句?

mysql怎么设置自动编号呢?