sqlserver触发器

 
--测试数据,首先我们创建测试数据,共有两张表:课程表(course)与学生表(student),其中学生表中
--的course_id字段为course的外键
 
-- USE [demo]
-- 创建course表
CREATE TABLE course(
    course_id varchar(50) PRIMARY KEY,
    course_name varchar(50)
)
GO
-- 创建student表
CREATE TABLE student(
    student_id varchar(50) PRIMARY KEY,
    student_name varchar(50),
    course_id varchar(50) FOREIGN KEY REFERENCES course(course_id)
)
GO
-- 插入数据
INSERT INTO course (course_id,course_name)
VALUES 
('C001','语文'),
('C002','数学'),
('C003','英语')
GO
 
INSERT INTO student (student_id,student_name,course_id)
VALUES
('S001','Lucy','C001'),
('S002','Jack','C002'),
('S003','Jane','C003'),
('S004','Jameson','C001')
GO

--insert触发器示例
--需求,我们需要在course表中添加更新时间字段(update_time),当我们插入学生的时候,就要对相应的该---课程的时间进行更新,代码如下:
-- 为course表添加字段
--ALTER TABLE course
--ADD update_time varchar(50)
--GO
-- 创建student表的触发器
IF (object_id('student_insert','tr') is not null)
   drop TRIGGER student_insert
GO
CREATE TRIGGER [dbo].[student_insert] ON [dbo].[student]
FOR insert
AS
DECLARE @c_name varchar(255), @cc VARCHAR(255), @course_id VARCHAR(50);
SELECT @course_id = course_id FROM inserted;
SELECT @c_name = (SELECT course_name FROM course WHERE course_id = @course_id);
SELECT @cc = (SELECT cc FROM course WHERE course_id = @course_id);
UPDATE student SET c_name = @c_name WHERE course_id = @course_id;
UPDATE student SET cc = @cc WHERE course_id = @course_id;
PRINT '相应课学生表已更新'
 

IF (object_id('user_insert','tr') is not null)
   drop TRIGGER user_insert
GO
CREATE TRIGGER [yjj].[user_insert] ON [yjj].[JZT_USER_BASE_INFO]
FOR insert
AS
DECLARE @B2B_ACCOUNTS VARCHAR(100), @druglic varchar(255), @drupdate VARCHAR(50), 
@cantsale VARCHAR(255), @license_invalidate VARCHAR(50);
SELECT @B2B_ACCOUNTS = B2B_ACCOUNTS FROM inserted;
SELECT @druglic = (SELECT LICENSE_NO FROM JZT_USER_LICENSE_INFO WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS AND  LICENCE_NAME = '药品经营许可证');
SELECT @drupdate = (SELECT LICENSE_VALIDITY_END FROM JZT_USER_LICENSE_INFO WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS AND LICENCE_NAME = '药品经营许可证');
SELECT @cantsale = (SELECT LICENSE_NO FROM JZT_USER_LICENSE_INFO WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS AND LICENCE_NAME = '营业执照');
SELECT @license_invalidate = (SELECT LICENSE_VALIDITY_END FROM JZT_USER_LICENSE_INFO WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS AND LICENCE_NAME = '营业执照');
UPDATE JZT_USER_BASE_INFO SET druglic = @druglic WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS;
UPDATE JZT_USER_BASE_INFO SET drupdate = @drupdate WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS;
UPDATE JZT_USER_BASE_INFO SET cantsale = @cantsale WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS;
UPDATE JZT_USER_BASE_INFO SET license_invalidate = @license_invalidate WHERE B2B_ACCOUNTS = @B2B_ACCOUNTS;
PRINT '会员基础表已更新'
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值