如何解决有没有一种方法可以在触发器的WHERE子句中使用用户的输入? SQL服务器
我试图创建一个触发器,以防止在不满足条件的情况下插入。这是我到目前为止的内容:
obj
在WHERE子句中,我想做类似的事情:
CREATE TRIGGER flightBookingLimit
ON Booking_Ticket
INSTEAD OF INSERT
AS
BEGIN
IF EXISTS(
SELECT COUNT(Booking_Details.Booking_ID),Passenger_Details.Name,Booking_Details.Flight_No
FROM Booking_Ticket
LEFT JOIN Booking_Details ON Booking_Ticket.Booking_ID = Booking_Details.Booking_ID
LEFT JOIN Passenger_Details ON Booking_Details.Passenger_ID = Passenger_Details.Passenger_ID
LEFT JOIN Flight_Schedule ON Booking_Details.Flight_No = Flight_Schedule.Flight_No
LEFT JOIN Aircraft ON Flight_Schedule.AircraftID = Aircraft.AircraftID
LEFT JOIN Airline ON Aircraft.AirlineID = Airline.AirlineID
WHERE Airline.AirlineName = 'Emirates Airlines'
GROUP BY Passenger_Details.Name,Booking_Details.Flight_No
HAVING COUNT(Booking_Details.Booking_ID) >= 4
)
BEGIN
PRINT 'This flight only allows a maximum of 4 bookings'
END
ELSE
INSERT INTO Booking_Ticket
SELECT Booking_ID,Passenger_ID,Flight_No,Reservation_Status,Special_ServiceID,Flight_MealsID,Flight_TripsID,Flight_ClassesID,Ticket_Status,Basic_Fare,Total_Fare
FROM inserted
END
执行插入查询时,是否可以检索用户的输入?对这些子句进行硬编码并不能帮助我完成我想实现的目标。
解决方法
不,不在2个级别上。
- 一个,WHERE子句通常不允许用户交互。通常,SQL没有任何用户交互。
- 触发完全反应。注入其他表中没有的任何东西的方式为零(您可以在表中进行设置)。这就是它们的完成方式。
通常,应用程序层的UI根据需要将SQL组合在一起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。