Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 356
1

Некорректная работа

23.12.2016, 20:00. Просмотров 937. Ответов 2
Метки нет (Все метки)

Здравствуйте. Есть триггер который удаляет запись и сохраняет ее в другую таблицу.(из таблицы билет в таблицу архив)
Но если зайти в другую таблицу(допустим сеанс) и удалить там запись,то она каким-то образом затронет таблицу билет(там есть строка код_сеанса) удалит там запись и тем самым запустит триггер и запись окажется в таблице архив. Надеюсь понятно объяснил. Как сделать,чтобы он удалял только из таблицы билет и не трогал другие таблицы??


SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE TRIGGER [Del]
    ON [dbo].[Билет]
    FOR DELETE
    AS
    BEGIN
DECLARE @a INT 
SET @a = (SELECT код_билета FROM deleted)
DECLARE @b INT
SET @b = (SELECT серия FROM deleted)
DECLARE @c INT
SET @c = (SELECT место FROM deleted)
DECLARE @d INT
SET @d = (SELECT цена FROM deleted)
DECLARE @e INT
SET @e = (SELECT ряд FROM deleted)
DECLARE @f DATE
SET @f = (SELECT дата_продажи FROM deleted)
DECLARE @g DATE
SET @g = (SELECT дата_возврата FROM deleted)
DECLARE @h DATE
SET @h = (SELECT дата_бронирования FROM deleted)
DECLARE @i INT
SET @i = (SELECT код_фильма FROM deleted)
DECLARE @j INT
SET @j = (SELECT код_сеанса FROM deleted)
DECLARE @k datetime
SET @k = (SELECT дата_просмотра FROM deleted)
DECLARE @l INT
SET @l = (SELECT код_продавца FROM deleted)
IF (SELECT COUNT(*) FROM deleted ) >0
BEGIN
INSERT INTO Архив (код_билета,серия,место,цена,ряд,дата_продажи,дата_возврата,дата_бронирования,код_фильма,код_сеанса,дата_просмотра,код_продавца)
VALUES (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l)
END
ELSE 
BEGIN 
print ('Перенос в архив не заверщен')
   ROLLBACK TRANSACTION
 
END
END
GO
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2016, 20:00
Ответы с готовыми решениями:

Некорректная работа триггера
Здравствуйте, не могу понять в чем ошибка. Логика: если значение >=100, то показатель оптимален, в...

Некорректная работа приложения с БД на других ПК
Еще раз здравствуйте! Помогите, пожалуйста, разобраться в следующей проблеме. Есть небольшая...

Некорректная установка SQL Server 2014 Express
Приветствую. Устанавливаю SQL Server 2014, при установке вылезают ошибки, когда установка...

Работа с файлом (корректный код, некорректная работа программы)
Для записи и чтения файла использую разные функции. По одиночке они работают нормально. Вставляю...

2
1035 / 852 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
23.12.2016, 23:33 2
Лучший ответ Сообщение было отмечено xq как решение

Решение

Цитата Сообщение от xq Посмотреть сообщение
,чтобы он удалял только из таблицы билет и не трогал другие таблицы??
он другие и не трогает
Цитата Сообщение от xq Посмотреть сообщение
Но если зайти в другую таблицу(допустим сеанс) и удалить там запись,то она каким-то образом затронет таблицу билет
ну а куда ещё девать билеты с более несуществующего сеанса? У тебя, наверняка, запускается каскадное удаление, поэтому и билет удаляется, а значит и в архив попадает. Правда смысла от Архив.код_сеанса никакого нет, т.к. этот сеанс удален и ко коду информацию о сеансе уже не извлечь, если нет архива и для сеансов.
1
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 356
24.12.2016, 00:09  [ТС] 3
Цитата Сообщение от YuryK Посмотреть сообщение
ну а куда ещё девать билеты с более несуществующего сеанса? У тебя, наверняка, запускается каскадное удаление, поэтому и билет удаляется, а значит и в архив попадает. Правда смысла от Архив.код_сеанса никакого нет, т.к. этот сеанс удален и ко коду информацию о сеансе уже не извлечь, если нет архива и для сеансов.
спасибо большое за разъяснения)

Архив.код_сеанса да, согласен,что-то не подумал об этом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2016, 00:09

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

Работа с INI: некорректная работа пользовательской функции
Ранее нашел код для работы с ini-файлами: public class INI { ///...

Некорректная работа
Почему когда ввожу численные значения (1.2.3.4) все столбцы ровные и все корректно отображается ,но...

Некорректная работа
Подскажите пожалуйста. Поставил win10, как-то сразу криво пошла установка anaconda. Запуск только...

Некорректная работа
Не могу разобраться в чём ошибка,пользователь вводит имя,и ссайт должен его поприветствовать,но...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.