Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >=
CREATE TRIGGER u_request_status_and_insert_connection
ON Requests
AFTER UPDATE
AS
BEGIN
DECLARE @ID_request INT = (SELECT ID_request FROM inserted),
@Request_status BIT = (SELECT Request_status FROM inserted)
DECLARE @ID_housing INT = (SELECT ID_housing FROM inserted),
@Tariff_name VARCHAR(15) = (SELECT TOP(1) Tariff_name FROM Tariffs)
PRINT @ID_housing
IF (@Request_status = 1)
BEGIN
DELETE Requests
WHERE ID_request = @ID_request
INSERT INTO Existing_connections(ID_housing, Tariff_name)
VALUES (@ID_housing, @Tariff_name)
PRINT 'Заявка одобрена.'
END
DECLARE @ID_client INT = (SELECT ID_client FROM Housing WHERE ID_housing = @ID_housing)
DECLARE @Surname_and_name_client VARCHAR(MAX) = (SELECT Surname + ' ' + Name FROM Clients WHERE ID_client = @ID_client),
@Type_name_of_residence VARCHAR(50) = (SELECT Type_name_of_residence FROM Housing WHERE ID_housing = @ID_housing),
@Street_name VARCHAR(50) = (SELECT Street_name FROM Housing WHERE ID_housing = @ID_housing)
DECLARE @Area_name VARCHAR(50) = (SELECT Area_name FROM Streets WHERE Street_name = @Street_name),
@House_num INT = (SELECT House_number FROM Housing WHERE ID_housing = @ID_housing),
@Floor_on_reside INT = (SELECT Floor_on_reside FROM Housing WHERE ID_housing = @ID_housing)
IF (@Type_name_of_residence = 'Квартира')
BEGIN
DECLARE @Apartment_number INT = (SELECT Apartment_number FROM Housing WHERE ID_housing = @ID_housing)
INSERT INTO Database_audit(Text_operation)
VALUES ('Заявка клиента под ID = ' + CONVERT(VARCHAR, @ID_client) + ' ' + @Surname_and_name_client +
' на подключение цифрового телевидения в квартиру №' + CONVERT(VARCHAR, @Apartment_number) + ', ' + @Street_name + ', '
+ CONVERT(VARCHAR, @House_num) + ', район ' + @Area_name + ' была переведена в статус ' +
CONVERT(VARCHAR, @Request_status) + '.')
END
ELSE
BEGIN
INSERT INTO Database_audit(Text_operation)
VALUES ('Заявка клиента под ID = ' + CONVERT(VARCHAR, @ID_client) + ' ' + @Surname_and_name_client +
' на подключение цифрового телевидения в частный дом, ' + @Street_name + ', '
+ CONVERT(VARCHAR, @House_num) + ', район ' + @Area_name + ' была переведена в статус ' +
CONVERT(VARCHAR, @Request_status) + '.')
END
END
GO
UPDATE Requests
SET Request_status = 1
WHERE ID_request = 2
Во время выполнения триггера вылетает вот такая ошибка:
Извините, не тот триггер скинул. Оказывается, проблема в другом триггере.