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

Откуда:
Сообщений: 15
Для таблицы Поставки написал простейший триггер, который должен вставлять некоторые поля таблицы Поставки в таблицу Amount_excel, но когда в таблицу Поставки добавляются записи с полями Наименование и Обозначение, которые уже есть в этой таблице, в таблицу Amount_Excel они передаются как null, если таких там не было, то все нормально. Подскажите, с чем это связано?

Amount_Excel:

CREATE TABLE [dbo].[Amount_Excel](
	[Код_Amount] [int] IDENTITY(1,1) NOT NULL,
	[Номер_задания] [nvarchar](10) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[Группа_инженера] [nvarchar](4) COLLATE Cyrillic_General_CI_AS NULL,
	[Наименование] [nvarchar](150) COLLATE Cyrillic_General_CI_AS NULL,
	[Обозначение] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NULL,
	[Количество_плановое] [numeric](10, 3) NULL,
	[Цех_потребитель] [nvarchar](300) COLLATE Cyrillic_General_CI_AS NULL,
	[Спецификация] [int] NULL,
	[Приход] [numeric](10, 3) NULL,
 CONSTRAINT [PK_Amount_Excel] PRIMARY KEY CLUSTERED 
(
	[Код_Amount] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


Поставки:

CREATE TABLE [dbo].[Поставки](
	[Код_наименования] [int] IDENTITY(1,1) NOT NULL,
	[Код_наимен_архив] [int] NULL,
	[Номер_задания] [nvarchar](10) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[Номер] [int] NULL,
	[Группа_инженера] [nvarchar](4) COLLATE Cyrillic_General_CI_AS NULL,
	[Наименование] [nvarchar](150) COLLATE Cyrillic_General_CI_AS NULL,
	[Обозначение] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NULL,
	[Цена_плановая] [money] NULL,
	[Количество_плановое] [numeric](10, 3) NULL,
	[Остатки_на_складе] [int] NULL,
	[Дата_поставки] [smalldatetime] NULL,
	[Цех_потребитель] [nvarchar](300) COLLATE Cyrillic_General_CI_AS NULL,
	[Заказ] [int] NULL,
 CONSTRAINT [PK_Поставки_ПКИ] PRIMARY KEY CLUSTERED 
(
	[Код_наименования] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


триггер:
Create trigger [update_pki] ON [dbo].[Поставки]
After Insert

as
begin
Set nocount on;
if not exists(select * from [INSERTED])
return;

Insert dbo.Amount_Excel(Номер_задания, Наименование, Обозначение, Группа_инженера, Количество_плановое, Цех_потребитель)
select 
	   I.Номер_задания
	  ,I.Наименование
	  ,I.Обозначение
	  ,I.Группа_инженера
	  ,I.Количество_плановое
	  ,I.Цех_потребитель
from Inserted I
end


При добавлении After Insert, update на 1 запись в Поставки добавляются 3 записи в Amount_Excel(в первой наименование и обозначение null, во второй обозначение null, в третьей поля заполнены как надо)
5 сен 12, 08:45    [13114978]     Ответить | Цитировать Сообщить модератору
 Re: некорректно срабатывает триггер  [new]
vas8
Member

Откуда:
Сообщений: 15
CONSTRAINT [PK_Поставки] PRIMARY KEY CLUSTERED
5 сен 12, 08:46    [13114984]     Ответить | Цитировать Сообщить модератору
 Re: некорректно срабатывает триггер  [new]
aleks2
Guest
Не, ну для "новых програмиздов" есть отладчик. Воткните точку останова в триггере и посмотрите откель его колбасит.
Старые то "програмизды" оне и без отладчика могут.

ЗЫ. Нибось у вас там триггеров как блох на старом кобеле...
5 сен 12, 09:25    [13115242]     Ответить | Цитировать Сообщить модератору
 Re: некорректно срабатывает триггер  [new]
aleks2
Guest
vas8
При добавлении After update на 1 запись в Поставки добавляются 3 записи в Amount_Excel

За третью запись не скажу, а фторую выж сами втыкаете. Как бе старая то никуды не делася.
5 сен 12, 09:29    [13115264]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить