十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
SqlServer中的自增的ID的最后的值:
创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元岳塘做网站,已为上家服务,为岳塘各地企业和个人服务,联系电话:13518219792
SELECT SCOPE_IDENTITY() --返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。
SELECT @@IDENTITY --返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值
SELECT IDENT_CURRENT('TbName')--不受作用域和会话的限制,而受限于指定的表。
IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SQL可以多个语句一起执行:
insert into ... ; SELECT SCOPE_IDENTITY() ;
二条一起执行,到时可获取第二个SQL的值
先说一下 SQL Server
通过 IDENTITY 来设置
参数有2个,一个是“初始值” 一个是“增量”。
默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。
对于 IDENTITY 的列 SQL Server 在 INSERT 的时候,会自动忽略掉。
1 CREATE TABLE test_create_tab2 (
2 id INT IDENTITY(1, 1) PRIMARY KEY,
3 val VARCHAR(10)
4 );
5 go
1 INSERT INTO test_create_tab2(val) VALUES ('NO id');
2 go
(1 行受影响)
1 INSERT INTO test_create_tab2(id, val) VALUES (6, 'id no use');
2 go
消息 544,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'test_create_tab2' 中的标识列插入显式值。
1 INSERT INTO test_create_tab2(val) VALUES ('A');
2 INSERT INTO test_create_tab2(val) VALUES ('B');
3 INSERT INTO test_create_tab2 VALUES ('C');
4 INSERT INTO test_create_tab2 VALUES ('D');
5 go
1 SELECT * FROM test_create_tab2;
2 go
id val
----------- ----------
1 NO id
2 A
3 B
4 C
5 D
(5 行受影响)
再说一下 mysql
通过
AUTO_INCREMENT设置
SQL INSERT语句的时候,要避免 指定那个自增的字段
mysql CREATE TABLE test_create_tab2 (
- id INT AUTO_INCREMENT,
- val VARCHAR(10),
- PRIMARY KEY (id)
- );
Query OK, 0 rows affected (0.09 sec)
mysql INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
sql server建表时设置ID字段自增的方法有两种:
1 、在SQL Server Management Studio中实现SQL Server自增字段
打开SQL Server Management Studio,打开数据库之后,在选中的表上点“修改”,在选中需要设置为自增的字段,在右下方的表设计器里选择“标识规范”,选“是”,就设定即可。
也可以在表的属性窗口中设置设置标识列:
2、使用SQL语句在程序或者查询分析器里面实现SQL Server自增字段
sql server 设置自增字段identity属性 (以新建数据表tablename中的id字段为例)
create table tablename
(
id int identity(1,1) //identity表示自增列的意思,而int identity(1,1)表示从1开始递增,每次自增1。
)
这样设置之后,tablename数据表中的id字段就是自增列。
如果想实现带前缀或者后缀的自动增加字段,不能用varchar,还是使用上面的方法创建字段,但是在读取的时候用增加前后缀的形式来显示想要的效果,例如如果希望得出结果是a001可以这么做select 'a'+convert(varchar(20),id) from tablename,这里的tablename是刚才建立的具体的表明。
SQL
Server
自增主键创建语法:
identity(seed,
increment),其中为seed
起始值,increment
为增量。示例如下:
create
table
student
//创建学生表
(id
int
identity(1,1),
name
varchar(100)
)
//
id字段为自增
自增字段的类型必须为不带小数的数值类型。
扩展资料:
实现自增字段的其他方法:
下列
SQL
语句把
"Persons"
表中的
"P_Id"
列定义为
auto-increment
主键:
CREATE
TABLE
Persons
(
P_Id
int
NOT
NULL
AUTO_INCREMENT,LastName
varchar(255)
NOT
NULL,
FirstName
varchar(255),
Address
varchar(255),
City
varchar(255),PRIMARY
KEY
(P_Id)
)
参考资料:搜狗百科-标识列