Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 3

Триггер на действие при изменении столбца в таблице

25.04.2019, 10:15. Показов 5352. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, не могу разобраться с триггером.

При обновлении данного столбца отрабатывается корректно, но при вставке новой строки с данными ыдет ошибку "Сообщение 512, уровень 16, состояние 1, процедура trg_tblTicket_suspended_start, строка 12
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следу"

Собственно сам триггер

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
after UPDATE
AS 
BEGIN
    set nocount on;
    DECLARE @suspended bit;
    DECLARE @datesuspendedstart date;
    set @suspended = (select Suspended from inserted);
    set @datesuspendedstart = GETDATE();    
    IF @suspended = 1
        BEGIN
            update tblTicket
            set SuspendedDayStart = @datesuspendedstart
            from inserted
            where tblTicket.ID_Ticket = inserted.ID_Ticket;
        END 
        
END
Помогите отредактировать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2019, 10:15
Ответы с готовыми решениями:

Триггер изменяющий поле в таблице при изменении записи
Здравствуйте. Допустим у нас есть таблица table1, поля a1,a2,a3, id*, real_time. Допустим пользователь изменил значения в записи. Я...

Можно ли написать триггер который наступает при изменении определенного столбца
Здравствуйте. Можно ли написать триггер который наступает при изменении определенного столбца

Действие при изменении цвета
Суть проблемы: нужно написать программу в среде С++ Builder 6, в которой при изменении цвета пикселя под курсором мыши выполнялось бы...

8
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
25.04.2019, 10:16
Цитата Сообщение от vega19 Посмотреть сообщение
set @suspended = (select Suspended from inserted);
это что вообще?
0
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 3
25.04.2019, 10:29  [ТС]
Определяю значение переменной из данных которые подставляются вручную.
Т..е. забираю значение поля Suspended и кладу в переменную @suspended.
Неправильно? Я вообще ноль, поэтому подскажите как правильно
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
25.04.2019, 10:36
Цитата Сообщение от vega19 Посмотреть сообщение
select Suspended from inserted
лехко и непринужденно возвращает больше одной записи
0
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 3
25.04.2019, 10:39  [ТС]
подскажите как отредактировать
0
46 / 33 / 14
Регистрация: 12.09.2013
Сообщений: 167
29.04.2019, 22:17
T-SQL
1
set @suspended = (select Suspended from inserted);
Если выполнить отдельно:


T-SQL
1
select Suspended from inserted
То вы увидите, что данный запрос возвращает более одной строки.


@suspended объявлена как переменная, а переменные, в свою очередь, могут хранить только одно значение.

То есть, присвоить переменной результат выполнения запроса можно ТОЛЬКО, если запрос возвращает 1 значение.

Перечитайте это предложение ещё раз и вы точно поймёте, в чём у вас проблема:

Присвоить переменной результат выполнения запроса можно ТОЛЬКО, если запрос возвращает 1 значение.

В общем виде это выглядит так:

T-SQL
1
SELECT t.field FROM table t WHERE t.condition = x
если запрос возвращает 1 строку, то можно написать:

T-SQL
1
set @variable = (SELECT t.field FROM table t WHERE t.condition = x)
Если запрос возвращает больше 1 строки, то выполнение данного участка кода приведёт к ошибке.
0
10 / 5 / 5
Регистрация: 26.04.2019
Сообщений: 26
02.05.2019, 08:45
Для проверки обновления столбца используйте конструкцию IF UPDATE(имя столбца).
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
02.05.2019, 15:07
обновление и вставка - это разные команды.
Update и Insert .
0
10 / 5 / 5
Регистрация: 26.04.2019
Сообщений: 26
02.05.2019, 16:32
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE t(id INT);
GO
--
CREATE TRIGGER tr_t ON t 
FOR INSERT,UPDATE
AS
BEGIN
IF UPDATE(id) SELECT CASE WHEN COUNT(*)=0 THEN 'insert' ELSE 'delete' END FROM deleted
END
GO
--
INSERT INTO t VALUES(1);
UPDATE t SET id=2 WHERE id=1;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2019, 16:32
Помогаю со студенческими работами здесь

Действие при изменении поля другим скриптом
Доброго времени суток! Помогите пожалуйста разобраться с такой задачкой... Есть два текстовых поля в которых цифры, с помощью...

Bool переменная; действие при изменении значения
Ребята, вопрос больше по логике написания нежели оформления. Такая ситуация: есть приложение, в приложении есть переменная, bool. Я...

Произвести действие при изменении позиции спрайта
Подскажите пожалуйста, думаю как написать условие. Если спрайт меняет свою позицию то я выполняю действия. Буду очень-очень благодарен.

Google Таблицы. Как при изменении ячейки в определенном диапазоне выполнить действие?
Добрый день. Прошу помочь, так как не смог найти ответ в инете. Необходимо написать постоянно работающий скрипт. Суть скрипта...

Итоговая таблица и триггер, который вносит изменения в эту таблицу при изменении данных в базе
я создаю итоговую таблицу: select count(ks) as vse, ( select count(ks) from Sotrudnik where pol=0) as woman , (select count (ks) from...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru