sql - 插入后创建触发器以打印语句的问题
问题描述
我正在做一个项目,我需要创建一个触发器,每次在名为注册的表上执行插入时打印一条语句。此触发器应在执行插入后打印教师姓名、会议地点、时间、学生姓名,但当我运行此触发器时,它会完成,但在已注册表上执行插入后,它不会打印任何信息,但insert 确实完成并用值填充表。这是我在下面创建的测试代码,以及提取每个值所需的表和示例插入语句。任何帮助是极大的赞赏。
USE test
GO
CREATE TRIGGER afterinsertprint on test.dbo.enrolled
AFTER INSERT
AS
BEGIN
DECLARE @studentname VARCHAR(30), @meetat varchar(30), @facultyname VARCHAR (30), @location NVARCHAR(10), @studentnumber int, @coursename NVARCHAR(12)
SELECT @studentnumber = snum, @coursename = cname FROM INSERTED;
SET @studentname = (SELECT sname from test.dbo.student WHERE snum = @studentnumber)
SELECT @facultyname = FNAME from test.dbo.faculty f join test.dbo.student s ON s.DEPT_ID = f.DEPT_ID where s.snum in
(SELECT snum FROM test.dbo.enrolled WHERE snum = @studentnumber and CNAME = @coursename);
SELECT @meetat = meets_at, @location = room FROM test.dbo.class WHERE cname IN (SELECT cname FROM test.dbo.enrolled
WHERE snum = @studentnumber and cname = @coursename);
IF (@studentnumber IS NOT NULL and @coursename IS NOT NULL)
BEGIN
PRINT (@studentname + @facultyname + @meetat + @location)
END;
END;
以下是用于表创建/插入的 DML/DLL
CREATE TABLE dbo.STUDENT
(snum int,
sname nvarchar(12),
MAJOR nvarchar(12),
DEPT_ID int,
slevel nvarchar(12),
AGE int,
CONSTRAINT STUDENT_SNUM_pk PRIMARY KEY (SNUM));
--
CREATE TABLE dbo.CLASS
(CNAME nvarchar(12),
MEETS_AT time,
ROOM nvarchar(10),
FID int,
CONSTRAINT CLASS_CNAME_pk PRIMARY KEY (CNAME));
--
CREATE TABLE dbo.ENROLLED
(SNUM int,
CNAME nvarchar(12));
--
CREATE TABLE dbo.FACULTY
(FID int,
FNAME nvarchar(40),
DEPT_ID int,
CONSTRAINT FACULTY_FID_pk PRIMARY KEY (FID));
--
CREATE TABLE dbo.DEPARTMENT
(DEPTid int,
DNAME nvarchar(100),
LOCATION nvarchar(100),
CONSTRAINT DEPARTMENT_DEPTID_pk PRIMARY KEY (DEPTID));
insert into dbo.STUDENT values (1234,'T.Banks','ME',3,'SR',19);
insert into dbo.DEPARTMENT values (1,'Computer Sciences','West Lafayette');
insert into dbo.FACULTY values (107,'Y.Walton',1);
insert into dbo.CLASS values ('ENG400',cast('08:30' as time),'U003',107);
insert into dbo.ENROLLED values (1234,'ENG400');
解决方案
推荐阅读
- postman - 邮递员请求中的未定义变量
- botframework - LUIS 和 QNA Maker 的脚本
- angular - 从 api 接收的角度 4 设置下拉选项值
- express - 将会话 cookie 设置为用户代理
- arrays - 具有匿名函数的 Linspace 每隔一秒跳过一次值
- npm - 通过 package.json 将视觉样式应用于 npm 脚本中使用的 echo 命令
- iis - 您可以在 IIS asp net core 中将 requestTimeout 设置为 1 分钟以下吗?
- python - 当 num epoch 设置为 None 时,tensorflow 训练无休止
- swift - 使用 Swift 在 FireBase 数据库中发生更改时如何获取计数值?
- sql-server - 将数据从 Excel 导入 SQL Server 时如何处理外键