sql server 2012使用触发器产生流水号并在另一库中创建与流水号有关的表

sql server 2012使用触发器产生流水号并在另一库中创建与流水号有关的表


有时候我们需要创建一个与流水号有关的表格,流水号可以根据日期来创建但我们不想把创建流水号有关的表放到同一个库中可以使用如下方法来创建,触发器笔者作了详细说明复制粘贴即可使用,只需将库名与表名还有字段修改成自已的库名与字段名。谨供参考

下面展示一些 内联代码片

USE [SecondSubjects]--第一个库名
GO
/****** Object:  Trigger [dbo].[TR_Creat17c03xh]    Script Date: 2021/5/9 23:53:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<杏雨>
-- Create date: <202157>
-- Description:	<Create [dbo].[vehicle_17c03]创建唯一备案序号并在[Vehicel_17C28]库创建与序号有关的表>
-- =============================================
CREATE TRIGGER [dbo].[TR_Creat17c03xh]
   ON  [dbo].[vehicle_17c03]
   AFTER INSERT
AS 
BEGIN
DECLARE @year NVARCHAR(10)--DECLARE @month NVARCHAR(10)--DECLARE @str NVARCHAR(10)--字符串变量(用来拼接流水号)
DECLARE @xh NVARCHAR(50)--序号(流水号8位)
DECLARE @xhmax NVARCHAR(50) --最大值
SET @year=DATENAME(yyyy, GETDATE())--获取年
SET @month=DATENAME(mm, GETDATE())--获取月
--SET @day=DATENAME(dd, GETDATE())
SET @str='0000'--赋值(如果想增加序号位数在这里增加零的个数)
SELECT @xhmax=MAX([id]) FROM vehicle_17c03 获取最大值(id为主键自增)
SET @xh=@year+@month+RIGHT(@str+@xhmax,4)--拼接字符串年月(取最右则4位加上id最大值)
UPDATE	vehicle_17c03  SET xh=@xh WHERE id=@xhmax--创建流水号(当有插入操作时更新Xh字段并将流水号更新到xh字段)

DECLARE @tb NVARCHAR(50)--表名称(拼接@qz+@xh)接接原则为表名称不能以数字开头所以加一个固定前缀加流水号以方便将来查找
DECLARE @qz NVARCHAR(50)--表名称前缀
SET @qz ='Vehicel_'	
SET @tb= @qz +@xh--拼接表名称
IF OBJECT_ID( @tb,N'U')IS NULL   --如果表格不存在就创建表格(U:代表用户表缩写是sqlserver定义格式)
BEGIN	
--由于触发器中不允许使用USE [Vehicel_17C28]所以这里将USE[Vehicel_17C28]拼到字符串中
--USE [Vehicel_17C28]第二个库名
EXEC( 'USE [Vehicel_17C28] CREATE TABLE [Vehicel_17C28].[dbo].[' +@tb +']

(
	[id] INT PRIMARY KEY IDENTITY(1,1),
	[xh] VARCHAR(50)  NOT NULL,	
	[jd] DECIMAL(18,8) NOT NULL,	
	[wd] DECIMAL(18,8) NOT NULL,
	[gd] DECIMAL(18,8) NOT NULL)')	
END
END

GO

效果如下图所示在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL Server 创建触发器的步骤如下: 1. 打开 SQL Server Management Studio 2. 选择要创建触发器数据库 3. 在“对象资源管理器”,展开“数据库”节点,右键单击“触发器”节点,选择“新建触发器” 4. 在“新建触发器”对话框,输入触发器的名称,选择触发器所针对的,以及触发器所响应的事件类型(如 INSERT、UPDATE 或 DELETE) 5. 在触发器的定义区域,输入触发器的操作,可以包括 SQL 语句、存储过程或者用户自定义函数等 6. 点击“确定”按钮,保存触发器 下面是具体的操作步骤: 1. 打开 SQL Server Management Studio 2. 选择要创建触发器数据库 3. 在“对象资源管理器”,展开“数据库”节点,右键单击“触发器”节点,选择“新建触发器” 4. 在“新建触发器”对话框,输入触发器的名称,选择触发器所针对的,以及触发器所响应的事件类型(如 INSERT、UPDATE 或 DELETE) 5. 在触发器的定义区域,输入触发器的操作,可以包括 SQL 语句、存储过程或者用户自定义函数等。例如,下面是一个在 `Orders` 上的触发器,响应 `INSERT` 事件,当插入新的订单时,将订单号和订单日期插入到 `OrdersLog` : ``` CREATE TRIGGER trg_InsertOrder ON Orders AFTER INSERT AS BEGIN INSERT INTO OrdersLog(OrderID, OrderDate) SELECT OrderID, OrderDate FROM inserted END ``` 6. 点击“确定”按钮,保存触发器触发器就会被创建并且自动启用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杏雨1969

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值