Reputation: 41
CREATE TRIGGER AirportCodeDegis
ON AIRPORT
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Silinen_AirportCode nvarchar(10) = (SELECT deleted.Airport_code FROM deleted);
DECLARE @Yeni_AirportCode nvarchar(10) = (SELECT inserted.Airport_code FROM inserted);
-- Airport Tablosunda güncellenen Airport_code değerini, CAN_LAND tablosunun içindeki airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM CAN_LAND WHERE CAN_LAND.Airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE CAN_LAND SET Airport_code = @Yeni_AirportCode WHERE Airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, FLIGHT_LEG tablosunun içindeki Arrival_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM FLIGHT_LEG WHERE FLIGHT_LEG.Arrival_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE FLIGHT_LEG SET Arrival_airport_code = @Yeni_AirportCode WHERE Arrival_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, FLIGHT_LEG tablosunun içindeki Departure_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM FLIGHT_LEG WHERE Departure_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE FLIGHT_LEG SET Departure_airport_code = @Yeni_AirportCode WHERE Departure_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, LEG_INSTANCE tablosunun içindeki Arrival_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM LEG_INSTANCE WHERE LEG_INSTANCE.Arrival_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE LEG_INSTANCE SET Arrival_airport_code = @Yeni_AirportCode WHERE Arrival_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, LEG_INSTANCE tablosunun içindeki Departure_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM LEG_INSTANCE WHERE LEG_INSTANCE.Departure_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE LEG_INSTANCE SET Departure_airport_code = @Yeni_AirportCode WHERE Departure_airport_code = @Silinen_AirportCode;
END
SET NOCOUNT OFF;
END;
I get this error:
Msg 156, Level 15, State 1, Procedure SegmentasyonSagla, Line 107 [Batch Start Line 3]
Incorrect syntax near the keyword 'TRIGGER'.
Can you help me about this error thank you :)
Upvotes: 2
Views: 666
Reputation: 13146
I guess, you are trying to create trigger in a procedure which named SegmentasyonSagla
. You should use dynamic query to create trigger.
CREATE PROC AirportCodeDegisProc
as
begin
declare @query nvarchar(max) = '
CREATE TRIGGER AirportCodeDegis
ON ActiveEvaluations
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Silinen_AirportCode nvarchar(10) = (SELECT deleted.Airport_code FROM deleted);
DECLARE @Yeni_AirportCode nvarchar(10) = (SELECT inserted.Airport_code FROM inserted);
-- Airport Tablosunda güncellenen Airport_code değerini, CAN_LAND tablosunun içindeki airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM CAN_LAND WHERE CAN_LAND.Airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE CAN_LAND SET Airport_code = @Yeni_AirportCode WHERE Airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, FLIGHT_LEG tablosunun içindeki Arrival_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM FLIGHT_LEG WHERE FLIGHT_LEG.Arrival_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE FLIGHT_LEG SET Arrival_airport_code = @Yeni_AirportCode WHERE Arrival_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, FLIGHT_LEG tablosunun içindeki Departure_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM FLIGHT_LEG WHERE Departure_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE FLIGHT_LEG SET Departure_airport_code = @Yeni_AirportCode WHERE Departure_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, LEG_INSTANCE tablosunun içindeki Arrival_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM LEG_INSTANCE WHERE LEG_INSTANCE.Arrival_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE LEG_INSTANCE SET Arrival_airport_code = @Yeni_AirportCode WHERE Arrival_airport_code = @Silinen_AirportCode;
END
-- Airport Tablosunda güncellenen airport_code değerini, LEG_INSTANCE tablosunun içindeki Departure_airport_code değerine atamaktadır..
IF (SELECT COUNT(*) FROM LEG_INSTANCE WHERE LEG_INSTANCE.Departure_airport_code = @Silinen_AirportCode) != 0
BEGIN
UPDATE LEG_INSTANCE SET Departure_airport_code = @Yeni_AirportCode WHERE Departure_airport_code = @Silinen_AirportCode;
END
SET NOCOUNT OFF;
END;'
EXECUTE sp_executesql @query
end
Upvotes: 1