【SQL开源代码栏目提醒】:网学会员为广大网友收集整理了,VoucMaster_Insert.sql,希望对大家有所帮助!
CREATE TRIGGER VoucMaster_Insert
ON VoucMaster
FOR INSERT
AS
/*如果改动记录是0, 就不执行*/
IF @@ROWCOUNT = 0 RETURN
/*
定义变量
@VoucDate : 支票日期
@VocuID : 支票单号
*/
DECLARE @VoucDate Char(8)
DECLARE @VoucID Char(10)
/*找出支票日期*/
SELECT @VoucDate = VoucDate
FROM VoucMaster
WHERE VoucID = (SELECT VoucID FROM inserted)
/*检查日期*/
IF (SELECT dbo.CheckDate(@VoucDate)) <> 0
BEGIN
RAISERROR ('日期格式错误。', 16, 1)
ROLLBACK TRANSACTION
END
/*补上支票号码
先找出目前最后的支票号码*/
SELECT @VoucID = MAX(VoucID)
FROM VoucMaster
WHERE VoucID LIKE ('AC' + LEFT(@VoucDate, 2) +
SUBSTRING(@VoucDate, 4, 2) + '%' )
IF RTRIM(LTRIM(@VoucID)) <> ''
BEGIN
IF RIGHT(@VoucID, 4) = '9999'
BEGIN
RAISERROR ('每个月的支票只允许有9999笔。', 16, 1)
ROLLBACK TRANSACTION
END
/*填上VoucID=目前的最大支票编号+1*/
UPDATE VoucMaster SET
VoucID = 'AC' + LEFT(@VoucDate, 2) + SUBSTRING(@VoucDate, 4, 2) +
RIGHT('0000' + LTRIM(STR(CAST(RIGHT(@VoucID, 4) AS int) + 1)), 4)
WHERE VoucID = (SELECT VoucID FROM inserted)
END
ELSE
BEGIN
/*不存在, 代表是第一笔记录*/
UPDATE VoucMaster SET
VoucID = 'AC' + LEFT(@VoucDate, 2) + SUBSTRING(@VoucDate, 4, 2) + '0001'
WHERE VoucID = (SELECT VoucID FROM inserted)
END