|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2019, 23:35 | #1 |
Новичок
Джуниор
Регистрация: 13.12.2019
Сообщений: 1
|
Создание тригеров
Создайте таблицу ReceiptArсhive, включающую следующие поля: ФИО_Доктора, ФИО_Клиента, № квитанции, Дата квитанции, Сумма по квитанции, dk – Дата-Время удаления квитанции, cu – Пользователь, удаливший квитанцию.
Напишите триггер, который при удалении записи из таблицы Receipt заполняет таблицу ReceiptArсhive. Протестируйте работу триггера. Я сделал, только при удаление ничего не появляется в ней go create table ReceiptArсhive( [ФИО Доктора] nvarchar(50), [ФИО Клиента] nvarchar(50), [№ квитанции] int, [Дата квитанции] date, [Сумма по квитанции] decimal(18,2), [Дата-Время удаления] datetime, [Пользователь] varchar(50)) go create trigger trReceiptArchive on Receipt after delete as begin declare @SNPD nvarchar(50), @SNPC nvarchar(50), @NR int, @DateR date, @SR decimal(18,2) if exists(select * from sysobjects where Name = '#tmp' and xtype = 'U') drop table #tmp select IdReceipt, Sum(Quantity * Price)as [Sum] into #tmp from Specification group by IdReceipt declare crI cursor for select D.[Name] +' '+D.Surname +' '+D.Patronymic as [ФИО Доктора], C.[Name] +' '+C.Surname +' '+C.Patronymic as [ФИО Клиента], R.IdReceipt as [№ квитанции], R.DateReceipt as [Дата квитанции], T.[Sum] as [Сумма по квитанции] from Receipt R join Doctor D on R.IdDoctor = D.IdDoctor join Client C on R.IdClient = C.IdClient join #tmp T on R.IdReceipt = T.IdReceipt where R.IdReceipt in (select deleted.IdReceipt from deleted) open crI fetch next from crI into @SNPD, @SNPC, @NR, @DateR, @SR while (@@FETCH_STATUS = 0) begin insert into ReceiptArсhive([ФИО Доктора], [ФИО Клиента], [№ квитанции], [Дата квитанции], [Сумма по квитанции], [Дата-Время удаления], [Пользователь]) values(@SNPD, @SNPC, @NR, @DateR, @SR, GETDATE(), USER_NAME()) fetch next from crI into @SNPD, @SNPC, @NR, @DateR, @SR end close crI Deallocate crI end ---------------- DELETE FROM Receipt WHERE IdReceipt=25 select * from ReceiptArсhive |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание DLL C++ | Midont | Фриланс | 4 | 20.07.2015 01:46 |
Создание XML JS | Nebojitel | JavaScript, Ajax | 2 | 18.10.2011 13:20 |
Создание внутреннего и внешнего серверов. Создание серверов автоматизации. | Ann_Sh | Помощь студентам | 3 | 09.10.2011 15:53 |
Создание ОС | misher | Операционные системы общие вопросы | 2 | 17.07.2010 00:32 |