Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL Триггер не работает  [new]
Сергей_1991
Member

Откуда:
Сообщений: 91
Добрый день!
Есть две таблицы:
TABLE [dbo].[tdCompany](
	[CompanyNo] [int] IDENTITY(1,1) NOT NULL,
	[CompanyName] [varchar](20) NULL,
	[AXDataArea] [varchar](3) NULL
) ON [PRIMARY]


и вторая таблица

TABLE [dbo].[tdCompany_Modife](
	[CompanyName] [varchar](20) NOT NULL,
	[CountRows] [int] NOT NULL,
	[TypeTransaction] [varchar](20) NOT NULL,
	[ModifeDate] [datetime] NOT NULL
) ON [PRIMARY]


Мне нужно создать триггер , который будет фиксировать момент вставки данных в таблицу tdCompany, и после успешной вставки записывать данные в таблицу tdCompany_Modife. Я написал следующий триггер , но он по какай то для меня причине не отрабатывает. Нужна Ваша помощь, так как с триггерами раньше не сталкивался

ALTER TRIGGER [dbo].[Ins_tdCompany]
ON [dbo].[tdCompany] AFTER INSERT
AS
BeGIN
SET NOCOUNT ON;
update tdCompany_Modife 
set CompanyName =  ii.CompanyName
, CountRows=ii.countrows
, TypeTransaction='UPDATE'
, ModifeDate=getdate()
from 
(select com.CompanyName,count(i.CompanyNo) as CountRows from tdCompany com  inner join  inserted i on i.CompanyNo=com.CompanyNo group by com.CompanyName)  ii

END


Сообщение было отредактировано: 18 окт 18, 12:49
18 окт 18, 12:36    [21707694]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Триггер не работает  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Сергей_1991,


1. погуглите как пишутся команды update у вас там бред написан
2. а строчку в таблицу tdCompany_Modife кто будет вставлять, или вы думаете что Update ее вставит?
18 окт 18, 12:49    [21707709]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Триггер не работает  [new]
Сергей_1991
Member

Откуда:
Сообщений: 91
WarAnt,
да, Вы действительно правы, в UPDATE забыл условие where, но главное , что в моем случаи нужно делать INSERT в таблицу.
Спасибо большое за подсказку
Вот исправленный триггер, все работает

ALTER TRIGGER [dbo].[Ins_tdCompany]
ON [dbo].[tdCompany] AFTER INSERT
AS
BeGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[tdCompany_Modife]
select CompanyName
, count(*) as CountRows
,'INSERT'
, GETDATE()
from inserted i
group by CompanyName

END
18 окт 18, 12:58    [21707728]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить