TSQL -比较两个日期[触发器和IF]



我正在尝试比较两个日期,@DataJogo和@DataEvento,并想检查游戏日期是否晚于事件的日期。

触发器只在插入有效时才工作,并且同时选择IF。

CREATE TRIGGER TriValidaData
ON jogo
AFTER INSERT, UPDATE
AS
DECLARE @DataJogo date, @DataEvento date , @IDJogo int, @IDEvento int
SELECT @IDJogo = id_jogo FROM inserted
SELECT @IDEvento = id_evento FROM inserted
SELECT @DataJogo =  data FROM inserted
SELECT @DataEvento = data FROM evento WHERE id_evento = @IDEvento
IF @DataJogo > @DataEvento
    SELECT 'O jogo foi adicionado com sucesso.' AS 'MENSAGEM';
ELSE
    DELETE FROM jogo WHERE id_jogo = @IDJogo;
    SELECT 'A data não é valida. A inserção de dados não foi efectuada com sucesso.' AS 'MENSAGEM';

INSERT INTO jogo VALUES (11,'15:00:00','16:00:00','2018-05-01',3,10,0)
DELETE FROM jogo WHERE id_jogo = 11;

图片1图2

谢谢你的帮助

不要对触发器这样做。使用check约束来完成:

alter table TriValidaData add constraint chk_TriValidaData_datas
    check (@DataJogo > @DataEvento);

如果你想用触发器来实现,那么你应该使用"而不是"触发器,并且只在条件为真时更新/插入到表中。

你需要把ELSE部分放在BEGIN…像这样的END块,

IF @DataJogo > @DataEvento BEGIN
    SELECT 'O jogo foi adicionado com sucesso.' AS 'MENSAGEM';
END
ELSE BEGIN
    DELETE FROM jogo WHERE id_jogo = @IDJogo;
    SELECT 'A data não é valida. A inserção de dados não foi efectuada com     sucesso.' AS 'MENSAGEM';
END

最新更新