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

Откуда:
Сообщений: 11
Сколько жил не довелось работать с триггерами, а тут приперло. Нужно сделать триггер на создание/изменение записи в таблице Person. Чтобы при создании/изменении записи в Person, создавалась новая запись в PersonHistory. То есть копировались 4 поля из Person в PersonHistory. База на MAS SQL 2008 R2.
Студия ругается на PersonHistory "недопустимое имя объекта"

CREATE TRIGGER trg_Person_add
ON OMPS.dbo.People
AFTER INSERT
AS
insert into PersonHistory (PersonID, PositionID, DepartmentID, OfficeID, EmployerID)
select PersonID, PositionID, DepartmentID, OfficeID, EmployerID from inserted
GO

Подскажите что не так?
26 янв 15, 06:39    [17168543]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
GaS_597
Студия ругается на PersonHistory "недопустимое имя объекта"
...
Подскажите что не так?
"Недопустимое имя объекта" значит, что объекта с этим именем нет.
Попробуйте указать схему для начала. Делать это нужно всегда.
26 янв 15, 07:08    [17168563]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
Ruuu, указываю CREATE TRIGGER trg_Person_add
ON OMPS.dbo.People
AFTER INSERT
AS
insert into OMPS.dbo.PersonHistory (PersonID, PositionID, DepartmentID, OfficeID, EmployerID)
select PersonID, PositionID, DepartmentID, OfficeID, EmployerID from inserted
GO
Студия в перечне таблиц не предлагает PersonHistory. Не могу понять почему.
26 янв 15, 07:24    [17168573]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
GaS_597
Студия в перечне таблиц не предлагает PersonHistory. Не могу понять почему.
может её нет?
26 янв 15, 07:37    [17168580]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
Ruuu
GaS_597
Студия в перечне таблиц не предлагает PersonHistory. Не могу понять почему.
может её нет?

Как нет? Если я ее создал, указал связи и пр.
26 янв 15, 08:39    [17168642]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10232
Блог
GaS_597
Как нет? Если я ее создал, указал связи и пр.


чудес не бывает:

use OMPS;
go
select object_id( N'dbo.PersonHistory', N'U' );
go 


???
26 янв 15, 09:10    [17168691]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
Knyazev Alexey
GaS_597
Как нет? Если я ее создал, указал связи и пр.


чудес не бывает:

use OMPS;
go
select object_id( N'dbo.PersonHistory', N'U' );
go 


???


750625717
26 янв 15, 09:29    [17168728]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
Вот скриншот

К сообщению приложен файл. Размер - 106Kb
26 янв 15, 09:33    [17168743]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
Glory
Member

Откуда:
Сообщений: 104751
GaS_597
Вот скриншот

Если вы не в курсе, то IntelliSense берет метаданные из своего кэша

IntelliSense functionality does not cover database objects created by another connection after your editor window connected to the database.
26 янв 15, 09:39    [17168767]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
GaS_597,

там на скриншоте сообщение о неправильном имени колонки, а не таблицы.
Видно, в таблице OMPS.dbo.People нет поля PersonID (Вам же подчеркнули красным даже!)
26 янв 15, 09:42    [17168785]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
deadok
Member

Откуда:
Сообщений: 86
Модератор удали мое предудущее сообщение, ошибся темой.
26 янв 15, 09:45    [17168799]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
Glory
GaS_597
Вот скриншот

Если вы не в курсе, то IntelliSense берет метаданные из своего кэша

IntelliSense functionality does not cover database objects created by another connection after your editor window connected to the database.

Но почему тогда он ругается?

CREATE TRIGGER trg_Person_add
ON OMPS.dbo.People
AFTER INSERT
AS
insert into OMPS.dbo.PersonHistory (PersonID, PositionID, DepartmentID, OfficeID, EmployerID)
select PersonID, PositionID, DepartmentID, OfficeID, EmployerID from inserted
GO

Сообщение 207, уровень 16, состояние 1, процедура trg_Person_add, строка 11
Invalid column name 'PersonID'.
26 янв 15, 09:45    [17168802]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
Glory
Member

Откуда:
Сообщений: 104751
GaS_597
Но почему тогда он ругается?

Потому Invalid column name 'PersonID' - это не таблица, а поле
26 янв 15, 09:47    [17168812]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером.  [new]
GaS_597
Member

Откуда:
Сообщений: 11
iap
GaS_597,

там на скриншоте сообщение о неправильном имени колонки, а не таблицы.
Видно, в таблице OMPS.dbo.People нет поля PersonID (Вам же подчеркнули красным даже!)

Бл... затупил... )))) Все отработало.
26 янв 15, 09:48    [17168822]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить