Sql server 创建插入前触发器比较两个表之间的值
我需要帮助创建插入前触发器,因为我是TSQL新手。下面是两张表 工资表:Sql server 创建插入前触发器比较两个表之间的值,sql-server,tsql,triggers,Sql Server,Tsql,Triggers,我需要帮助创建插入前触发器,因为我是TSQL新手。下面是两张表 工资表: CREATE TABLE SALARY ( StarName varchar(30) NOT NULL, MovieTitle varchar(30)NOT NULL, MovieYearMade numeric(4, 0) NOT NULL, Amount numeric(8, 0) NULL, PRIMARY KEY (MovieTitle,StarName,MovieYearM
CREATE TABLE SALARY
(
StarName varchar(30) NOT NULL,
MovieTitle varchar(30)NOT NULL,
MovieYearMade numeric(4, 0) NOT NULL,
Amount numeric(8, 0) NULL,
PRIMARY KEY (MovieTitle,StarName,MovieYearMade),
)
MOVIESTAR表
CREATE TABLE MOVIESTAR
(
Name varchar(30) NOT NULL,
Address varchar(20),
City varchar(15) DEFAULT ('Palm Springs'),
Gender char(1) NULL CHECK (Gender ='M' OR GENDER ='F'),
BirthYear Numeric(4),
PRIMARY KEY CLUSTERED (Name)
)
我想创建一个触发器,以便在添加新电影时触发。如果SALARY.MovieYearMade
在MOVIESTAR.BirthYear
之前,则禁止添加SALARY.Amount
当我比较两个表中的值,即SALARY
和MOVIESTAR
时,我对如何定义触发器感到困惑
谢谢,你在找这样的东西吗
CREATE TRIGGER tg_salary ON salary
INSTEAD OF INSERT AS
BEGIN
INSERT INTO salary (StarName, MovieTitle, MovieYearMade, Amount)
SELECT i.StarName, i.MovieTitle, i.MovieYearMade,
CASE WHEN i.MovieYearMade < s.BirthYear THEN NULL ELSE i.Amount END
FROM INSERTED i JOIN moviestar s
ON i.StarName = s.Name
END
在薪资上创建触发器TGU薪资
而不是插入为
开始
插入工资(StarName、MovieTitle、MovieYearMaked、金额)
选择i.StarName、i.MovieTitle、i.movieyearmake、,
当i.movieyearmake
下面是演示SQL Server没有Before触发器,它只有After触发器,而不是触发器。谷歌可以很容易地向你展示如何做到这些。