我的要求是:有两个表:a)C_Table
,b)Mst_Table
两者都有相同的表结构,包含三列:i)S_NO
,ii)CONTENT_ID
,iii)INSTANCES
Mst_Table
最初有三条记录:
INSERT INTO Mst_Table Values (1, 'A1', 20);
INSERT INTO Mst_Table Values (2, 'A2', 10);
INSERT INTO Mst_Table Values (3, 'A3', 5);
现在,我在表C_table中插入四条记录:
INSERT INTO C_Table Values (1, 'A1', 22);
INSERT INTO C_Table Values (2, 'A4', 20);
INSERT INTO C_Table Values (3, 'A5', 5);
INSERT INTO C_Table Values (4, 'A1', 18);
在表C_table
中插入记录时,应检查列{ - 1}},CONTENT_ID
是否已有任何记录。如果不是,那么插入将在Mst_Table
成功完成,但如果是,那么它将检查列 - C_table
。
如果INSTANCES
的{{1}}值大于INSTANCES
,那么C_Table
列中的C_table值应该更新为Mst_Table
- INSTANCES
)值。
触发器定义:
INSTANCES_Value_C_Table
答案 0 :(得分:0)
这是你的意图吗?
DROP TABLE Mst_Table
GO
DROP TABLE C_Table
GO
CREATE TABLE Mst_Table
(
S_NO int,
CONTENT_ID varchar(2),
INSTANCES int
)
GO
CREATE TABLE C_Table
(
S_NO int identity(1,1) not null,
CONTENT_ID varchar(2),
INSTANCES int
)
GO
INSERT INTO Mst_Table Values (1, 'A1', 20);
INSERT INTO Mst_Table Values (2, 'A2', 10);
INSERT INTO Mst_Table Values (3, 'A3', 5);
GO
CREATE TRIGGER VCTable ON C_Table
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO C_Table (CONTENT_ID, INSTANCES)
SELECT inserted.CONTENT_ID, isnull(C_Table.INSTANCES - inserted.INSTANCES, inserted.INSTANCES)
FROM inserted
LEFT JOIN C_Table ON inserted.S_NO = C_Table.S_NO
LEFT JOIN Mst_Table on inserted.CONTENT_ID = Mst_Table.CONTENT_ID
END
GO
INSERT INTO C_Table (CONTENT_ID, INSTANCES) Values ('A1', 22);
INSERT INTO C_Table (CONTENT_ID, INSTANCES) Values ('A4', 20);
INSERT INTO C_Table (CONTENT_ID, INSTANCES) Values ('A5', 5);
INSERT INTO C_Table (CONTENT_ID, INSTANCES) Values ('A1', 18);
SELECT * FROM C_Table