SQL AUTO INCREMENT 字段

1、用于 SQL Server 的语法

下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:

CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。

默认地,IDENTITY 的开始值是 1,每条新记录递增 1。

要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)

要在 "Persons" 表中插入新记录,我们不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

2、

用于 Oracle 的语法

在 Oracle 中,代码稍微复杂一点。

您必须通过 sequence 对创建 auto-increment 字段(该对象生成数字序列)。

请使用下面的 CREATE SEQUENCE 语法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

上面的代码创建名为 seq_person 的序列对象,它以 1 起始且以 1 递增。该对象缓存 10 个值以提高性能。CACHE 选项规定了为了提高访问速度要存储多少个序列值。

要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

INSERT INTO Persons (P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
在这里P_Id的值就会实现从1开始自增

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 的赋值是来自 seq_person 序列的下一个数字。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

小注:

1、sequence与并不针对某个表。

2、INCREMENT BY 1 -- 每次增加1
     START WITH 1 -- 从1开始计数
     NOMAXVALUE -- 不设置最大值
     NOCYCLE -- 一直累加,不循环
     NOCACHE -- 不建缓冲区

3、一旦定义了seq_person,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回sequence的当前值
NEXTVAL=增加sequence的值,然后返回sequence值

时间: 2024-11-08 20:26:40

SQL AUTO INCREMENT 字段的相关文章

session-aspx单点登录 怎么判断不正常退出,将SQL数据库一字段改成true

问题描述 aspx单点登录 怎么判断不正常退出,将SQL数据库一字段改成true 我做了一个系统,在同一时间,一个帐号只能一个登录,我把数据库帐号表加了一个列,用来判断是否登录,如果没登录,为true,如果登录后,就改为false,然后在登陆界面判断这个列是true还是false,如果是false就弹框,不能进去. 只有用户自己安全退出,才把false改成true 我的帐号使用session传值的. 现在有个麻烦,就是如果直接关掉游览器,那这个列的字段不会自己变成true,怎么办?还有直接断电和

在MongoDB中模拟Auto Increment的php代码

代码大致如下所示: 复制代码 代码如下: <?php function generate_auto_increment_id($namespace, array $option = array()) { $option += array( 'init' => 1, 'step' => 1, ); $instance = new Mongo(); $instance = $instance->selectCollection('_seq', 'seq'); $seq = $insta

添加-sql如何为字段加单位??????

问题描述 sql如何为字段加单位?????? create table 表名(字段1 varchar) 如上,我想为字段1添加单位(千米),sql怎么写 解决方案 select 字段1||'千米' from 表名

SQL对Xml字段的操作

原文:SQL对Xml字段的操作   T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中

sql查询表中字段值在另一个表中的字段是否出现过

问题描述 sql查询表中字段值在另一个表中的字段是否出现过 各位大神,小弟初学sql想请教一个问题~~先谢谢大家啦~~ 例如我有两个表: 表A:personal (人员表) pid name 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 ffff 7 ggg 表B:metting (会议表,pidlist代表参加会议的人员,用"|"分隔) mid pidlist 1 |2|3|4| 2 |1|3|4| 3 |1|2|4| 我想要 列出表A中没有参加会议的人,如果按我的

access数据库-Access 数据库,SQL(多字段关联重复数据去除)

问题描述 Access 数据库,SQL(多字段关联重复数据去除) --这个表,我这边将这些字段(6个)重复的数据清除,因为之前没做主键.唯一等约束,造成数据重复.混乱! select distinct FPeriod,facctid,fclsid,fobjid,fcyid,fbase from glpnl_20140423bak --一共8个字段,我要根据期中六个做联合主键,所以要把这些垃圾数据清除----求大神出现! 解决方案 新加一张表,存储查重后的结果,这样不可以吗

MySQL中使用SQL语句对字段进行重命名_Mysql

MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table <表名> change <字段名> <字段新名称> <字段的类型>. 现在我们来尝试把test表中的t_name字段重命名为t_name_new字段. 1.首先查看一下当前test表的结构 mysql> describe test; +------------+-------------+---

oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert_oracle

最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id="batchInsertLine" parameterType="HashMap"> <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.next

sql 两个字段相减语句

sql 两个字段相减语句 本文章搜索了大量来自网络的关于sql 两个字段相减语句与函数代码,举例说明了两个字段相减做法. select a.字段1,字段2=a.字段2-isnull((select 字段2 from 表2 where a.字段1=字段1),0) from 表1 a 方法二 create  table 表1( 字段1 varchar(50),   字段2 int) insert into 表1 select       '111001' ,   10  union all sele