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

Откуда: Украина, Донецк
Сообщений: 61
Подскажите пожалуйста, что тут не так?
По задумке, это триггер которые вставляет записи в таблицу из функции.
Ругается на INSERT

USE Аэропорт;
GO
IF OBJECT_ID ('Add_route','TR') IS NOT NULL
   DROP TRIGGER Add_route;
GO

CREATE TRIGGER Add_route ON Аэропорт.dbo.Рейсы
INSERT dbo.Рейсы (код_расписания, Время_вылета_факт, Время_прибытия_факт)
SELECT * FROM dbo.Расписания r
	CROSS APPLY  dbo.DateList(r.Период_с, r.Период_по, r.Код_расписания, r.Время_вылета_план, r.Время_прибытия_план)
GO


И если можно подскажите, может можно сделать так, чтобы данные добавлялись в таблицу не только во время создания записей? А например при добавлении записи в таблицу Расписания
17 дек 12, 23:02    [13646141]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
step_ks
Member

Откуда:
Сообщений: 936
One_question, а где у вас указано, на какой действие с таблицей должен срабатывать триггер? Смотрите справку по CREATE TRIGGER.
17 дек 12, 23:14    [13646181]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
qwerty112
Guest
One_question,

где это ?
CREATE TRIGGER [ schema_name . ]trigger_name 
ON { table | view } 
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF } 
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 
[ WITH APPEND ] 
[ NOT FOR REPLICATION ] 
AS { sql_statement  [ ; ] [ ...n ] | EXTERNAL NAME <method specifier [ ; ] > }
17 дек 12, 23:14    [13646183]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
step_ks
Member

Откуда:
Сообщений: 936
One_question
И если можно подскажите, может можно сделать так, чтобы данные добавлялись в таблицу не только во время создания записей? А например при добавлении записи в таблицу Расписания

чем отличается добавление и создание записей?
17 дек 12, 23:15    [13646184]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
USE Аэропорт;
GO
IF OBJECT_ID ('Add_route','TR') IS NOT NULL
   DROP TRIGGER Add_route;
GO

ALTER TRIGGER Add_route ON Аэропорт.dbo.Рейсы
INSTEAD OF INSERT 
AS
BEGIN
INSERT INTO dbo.Рейсы (код_расписания, Время_вылета_факт, Время_прибытия_факт)
SELECT * FROM dbo.Расписания r
	CROSS APPLY  dbo.DateList(r.Период_с, r.Период_по, r.Код_расписания, r.Время_вылета_план, r.Время_прибытия_план)
GO



step_ks
чем отличается добавление и создание записей?

Я уже обнаружила такую команду как INSTEAD OF INSERT и она как раз то что надо. Под данным вопросом (я к сожалению неверно выразилась), хотела чтобы при добавлении записи в таблицу Расписания создавались автоматически записи в таблице Рейсы с помощью этого триггера
17 дек 12, 23:23    [13646200]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
И все равно выводит ошибку
USE Аэропорт;
GO
IF OBJECT_ID ('Add_route','TR') IS NOT NULL
   DROP TRIGGER Add_route;
GO

ALTER TRIGGER Add_route ON Аэропорт.dbo.тРейсы
INSTEAD OF INSERT 
AS
BEGIN
INSERT INTO dbo.тРейсы (код_расписания, Время_вылета_факт, Время_прибытия_факт)
SELECT dbo.DateList.kod, dbo.DateList.dt_in, dbo.DateList.dt_out   FROM dbo.тРасписания r
	CROSS APPLY  dbo.DateList(r.Период_с, r.Период_по, r.Код_расписания, r.Время_вылета_план, r.Время_прибытия_план)
END
GO

Я не то чтобы новичок.. но с триггерами впервые сталкиваюсь
Сообщение 208, уровень 16, состояние 6, процедура Add_route, строка 6
Недопустимое имя объекта "Add_route".
17 дек 12, 23:30    [13646223]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
qwerty112
Guest
One_question
И все равно выводит ошибку
USE Аэропорт;
GO
IF OBJECT_ID ('Add_route','TR') IS NOT NULL
   DROP TRIGGER Add_route;
GO

ALTER TRIGGER Add_route ON Аэропорт.dbo.тРейсы
INSTEAD OF INSERT 
AS
BEGIN
INSERT INTO dbo.тРейсы (код_расписания, Время_вылета_факт, Время_прибытия_факт)
SELECT dbo.DateList.kod, dbo.DateList.dt_in, dbo.DateList.dt_out   FROM dbo.тРасписания r
	CROSS APPLY  dbo.DateList(r.Период_с, r.Период_по, r.Код_расписания, r.Время_вылета_план, r.Время_прибытия_план)
END
GO

Я не то чтобы новичок.. но с триггерами впервые сталкиваюсь
Сообщение 208, уровень 16, состояние 6, процедура Add_route, строка 6
Недопустимое имя объекта "Add_route".

ты ж его (триггер) 2-мя строками выше удалила,
какой ALTER ? CREATE нужно
17 дек 12, 23:34    [13646229]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
step_ks
ты ж его (триггер) 2-мя строками выше удалила,
какой ALTER ? CREATE нужно


Я тоже это по началу это заметила.. но там была ошибка что триггер уже существует, поэтому поставила ALTER и все равно не смогла ему (триггеру) угодить
17 дек 12, 23:37    [13646236]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
One_question, INSTEAD OF INSERT срабатывает "вместо вставки". Вы уверены, что Вам именно это нужно?
17 дек 12, 23:43    [13646255]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
PaulYoung, да. Именно так мне и нужно.. Те поля которые там указаны должны заполняться посредством другой таблицы. А остальные вручную.
17 дек 12, 23:44    [13646260]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
One_question
при добавлении записи в таблицу Расписания создавались автоматически записи в таблице Рейсы
Тогда уж нужен триггер AFTER INSERT для Расписаний, в котором и будет вставка в Рейсы. А может ну его, этот триггер, а? Вставить 2-мя INSERT'ами, да и дело с концом...
17 дек 12, 23:49    [13646266]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
PaulYoung, я думала над этим, но мне нужно более "автоматизированная система" и думаю преподаватель проверит как эти данные добавляются..

А почему двумя INSERT'ами?
18 дек 12, 00:03    [13646294]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
One_question, э-э-эммм... ну как бы Вам сказать, триггер - это ведь не просто набор инструкций SQL, это ведь ещё и определенные правила и ограничения, и особенности и т.д. и т.п. Вы уверены, что все их учтёте? А 2 INSERT'а попроще будут, что-то вроде INSERT INTO Расписания (...) ..., ну и затем INSERT Рейсы (...) SELECT ... FROM Расписания ... Но это если конечно именно такая задача.
18 дек 12, 00:11    [13646313]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
PaulYoung
One_question, э-э-эммм... ну как бы Вам сказать, триггер - это ведь не просто набор инструкций SQL, это ведь ещё и определенные правила и ограничения, и особенности и т.д. и т.п. Вы уверены, что все их учтёте? А 2 INSERT'а попроще будут, что-то вроде INSERT INTO Расписания (...) ..., ну и затем INSERT Рейсы (...) SELECT ... FROM Расписания ... Но это если конечно именно такая задача.


Почему-то мне представляется то, что Вы написали намного сложнее чем уже практически существующий триггер. И скорее всего с меня все же потребуют чтобы это был триггер..


PaulYoung
Тогда уж нужен триггер AFTER INSERT для Расписаний, в котором и будет вставка в Рейсы

Это выходит что я не на ту таблицу триггер написала(недописала)? (
18 дек 12, 00:35    [13646381]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
One_question
Это выходит что я не на ту таблицу триггер написала(недописала)? (
Да
18 дек 12, 00:38    [13646393]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
CREATE TRIGGER
18 дек 12, 00:40    [13646398]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на добавление записей  [new]
One_question
Member

Откуда: Украина, Донецк
Сообщений: 61
PaulYoung, да я вроде уже прочла эту инструкцию от корки до корки за эти две недели..

Я всё таки добила этот триггер! Он идеально выполняет свои обязанности! Всё благодаря Вам всем, знатоки
Обещаю что когда вырасту обязательно буду такой как Вы :)
18 дек 12, 00:56    [13646422]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить