【发布时间】:2010-04-27 18:40:52
【问题描述】:
我在我的 sql server 2008 数据库上得到了以下触发器
CREATE TRIGGER tr_check_stoelen
ON Passenger
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS(
SELECT 1
FROM Passenger p
INNER JOIN Inserted i on i.flight= p.flight
WHERE p.flight= i.flightAND p.seat= i.seat
)
BEGIN
RAISERROR('Seat taken!',16,1)
ROLLBACK TRAN
END
END
当我尝试运行下面的查询时,触发器抛出错误。这个查询我应该在两个不同航班的数据库中插入两个不同的乘客。我确定两个座位都没有被占用,但我无法弄清楚为什么触发器给了我错误。它必须与相关性有关吗?
INSERT INTO passagier VALUES
(13392,5315,3,'Janssen Z','2A','October 30, 2006 10:43','M'),
(13333,5316,2,'Janssen Q','2A','October 30, 2006 11:51','V')
更新: 该表如下所示
CREATE TABLE Passagier
(
passengernumber int NOT NULL CONSTRAINT PK_passagier PRIMARY KEY(passagiernummer),
flight int NOT NULL CONSTRAINT FK_passagier_vlucht REFERENCES vlucht(vluchtnummer)
ON UPDATE NO ACTION ON DELETE NO ACTION,
desk int NULL CONSTRAINT FK_passagier_balie REFERENCES balie(balienummer)
ON UPDATE NO ACTION ON DELETE NO ACTION,
name varchar(255) NOT NULL,
seat char(3) NULL,
checkInTime datetime NULL,
gender char(1) NULL
)
【问题讨论】:
-
请问表架构是什么?
-
对不起荷兰语和英语的混合。但我在荷兰工作,在这里翻译只是为了更好地理解;-)
标签: sql sql-server-2008 triggers insert