SQL Server中根据某个字段,ID字段自动增长的实现

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 创建一个表,根据Description的不同,各自对应的ID起点不同,需求:1、管理员ID从1000开始自增,自增量为12、系主任ID从2000开始自增,自增量为13、普通教师I...

创建一个表,根据Description的不同,各自对应的ID起点不同,

需求:

1、管理员ID从1000开始自增,自增量为1


2、系主任ID从2000开始自增,自增量为1


3、普通教师ID从3000开始自增,自增量为1


创建表语句如下:

create table C
(
   ID int,
   Description varchar(50)
);

接下来为这个表创建触发器,如下所示:

 

create trigger tr_syit
on C for insert
as
   declare @r1 int,@c1 int,@n1 int, @r2 int,@c2 int,@n2 int, @r3 int,@c3 int,@n3 int
   
   --处理管理员编号
   select @n1 = inserted.ID from inserted;
   select @c1 = count(ID) from C where Description='管理员';
   if(@c1=1)
    set  @r1= 1000;
   else
     begin
       select @r1 = max(ID) from C where Description='管理员';
       set @r1= @r1+1;
     end
       
   --处理系主任编号  
   select @n2 = inserted.ID from inserted;
   select @c2 = count(ID) from C where Description='系主任';
   if(@c2=1)
    set  @r2= 2000;
   else
     begin
       select @r2 = max(ID) from C where Description='系主任';
       set @r2= @r2+1;
     end
       
   --处理普通教师编号
   select @n3 = inserted.ID from inserted;
   select @c3 = count(ID) from C where Description='普通教师';
   if(@c3=1)
    set  @r3= 3000;
   else
    begin
       select @r3 = max(ID) from C where Description='普通教师';
       set @r3= @r3+1;
     end
   
   --执行插入操作
   update C set ID=(case when Description='管理员' then @r1
     when Description='系主任' then @r2
     else @r3 end) where ID= (case when Description='管理员' then @n1
     when Description='系主任' then @n2
     else @n3 end);

 

 --测试用插入数据

insert into C values(1,'管理员');
 
insert into C values(1,'系主任');
 
insert into C values(1,'普通教师');

 

--查询数据
 select * from C;

结果如下图所示:插入三行数据






 

  

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
23天前
|
SQL 存储 数据库
SQL部分字段编码设置技巧与方法
在SQL数据库管理中,设置字段的编码对于确保数据的正确存储和检索至关重要
|
18天前
|
SQL 存储 Serverless
SQL语句拆分时间字段的技巧与方法
在数据库操作中,经常需要处理时间数据
|
26天前
|
SQL 存储 关系型数据库
SQL判断CHAR类型字段不为空的方法与技巧
在SQL查询中,判断一个CHAR类型字段是否不为空是一个常见的需求
|
26天前
|
SQL Oracle 关系型数据库
SQL如何添加字段记录:详细步骤与技巧
在数据库管理中,经常需要向已有的表中添加新的字段(列)或向表中插入新的记录
|
30天前
sqlserver实现取相同名称放在同一字段
sqlserver实现取相同名称放在同一字段
27 2
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
2月前
|
SQL 关系型数据库 MySQL
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
140 0
|
3月前
|
SQL Java Scala
flink-cdc SQL Server op 字段如何获取?
Flink CDC 是 Apache Flink 的组件,用于捕获数据库变更事件。对 SQL Server,通过 Debezium 连接器支持变更数据捕获。`op` 字段标识操作类型(INSERT、UPDATE、DELETE)。配置包括添加依赖及设定 Source 连接器,可通过 Flink SQL 或 Java/Scala 完成。示例查询利用 `op` 字段筛选处理变更事件。
113 1
|
3月前
|
SQL Oracle 关系型数据库
SQL添加字段记录详解:技巧与方法实践
在数据库管理中,经常需要向表中添加新的字段(列)或向现有字段中插入新的记录(行)
1035 0
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
432 0