powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление данных из триггера в представление
17 сообщений из 17, страница 1 из 1
Добавление данных из триггера в представление
    #40028383
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! У меня задание сделать триггер для представление, который будет добавлять туда данные. Вроде звучит просто, но когда я начал делать, то столкнулся с ошибкой : "Имя столбца или число предоставленных значений не соответствует определению таблицы.". Я понимаю, что не совпадают строки или значения, но я не могу понять почему. Если поможете, то заранее спасибо! Код снизу. На скрине сами таблицы.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
GO
ALTER VIEW InjuriesSportsmen
AS
SELECT SP.SportsmenID, TY.TypeOfInjuryID, Классификация, [Тип травмы] FROM [Травмы спортсменов] AS INJ JOIN Спортсмены AS SP 
ON INJ.SportsmenID = SP.SportsmenID JOIN [Виды травм] AS TY ON INJ.TypeOfInjuryID = TY.TypeOfInjuryID
GO

SELECT * FROM InjuriesSportsmen

GO 
ALTER TRIGGER InsertSportsman
ON InjuriesSportsmen
INSTEAD OF INSERT
AS
SET NOCOUNT ON
BEGIN TRY
	INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))
END TRY
BEGIN CATCH
ROLLBACK;
THROW 51000, 'INSERT ERROR', 0
END CATCH
GO
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028386
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))


Вообще не понятно, что вы хотели сделать этим запросом.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028393
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicka121212
У меня задание сделать триггер для представление, который будет добавлять туда данные. Вроде звучит просто, но когда я начал делать, то столкнулся с ошибкой : "Имя столбца или число предоставленных значений не соответствует определению таблицы.". Я понимаю, что не совпадают строки или значения, но я не могу понять почему. Если поможете, то заранее спасибо! Код снизу. На скрине сами таблицы.
Начните с написания и отладки запросов на вставку данных в таблицу.
А в триггер потом перенесёте.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028394
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Ну, как я понял нельзя же вставлять новые данные в представление , если оно ссылается на несколько таблиц.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028396
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Megabyte,

Предложите что-нибудь( Как мне внести новые данные через триггер в представление?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028406
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicka121212,

почему только так, а не иначе?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028408
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас с синтаксисом проблемы, о чем вам сообщили в первом же комментарии
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028409
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
а можно иначе добавлять/удалять/изменять данные в представление, которое связано с несколькими таблицами?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028416
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicka121212,

добавляйте в таблицы, а не в представление. Представление - это запрос.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028417
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Код: plsql
1.
2.
INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))




Но разве тут я не в таблицу добавляю ?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028423
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicka121212
Владислав Колосов,

Код: plsql
1.
2.
INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))



Но разве тут я не в таблицу добавляю ?
В таблицу, просто синтаксис у вас дикий.
SELECT Классификация FROM [Виды травм] возвращает кучу записей в выходной рекордсет
А предложение VALUES требует скалярные значения, а не рекордсеты.

Выглядит, как попытка оператором "+" сложить 2 картинки, на которых нарисованы цифры. И вопрос "разве это не сложение?"
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028429
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Nicka121212
Владислав Колосов,

Код: plsql
1.
2.
INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))



Но разве тут я не в таблицу добавляю ?
В таблицу, просто синтаксис у вас дикий.
SELECT Классификация FROM [Виды травм] возвращает кучу записей в выходной рекордсет
А предложение VALUES требует скалярные значения, а не рекордсеты.

Выглядит, как попытка оператором "+" сложить 2 картинки, на которых нарисованы цифры. И вопрос "разве это не сложение?"


В доме повешенного не говорят о веревке.
Но.
Тут дело не в синтаксисе.
Тут дело в понимании.
Точнее НЕпонимании того, чего он хочет сделать.

ЗЫ. В варианте тредстартера ничего вставить в таблицу не получится.
Вставлять нечего.

ЗЗЫ. Православный триггер выглядит вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER TRIGGER InsertSportsman ON InjuriesSportsmen
INSTEAD OF INSERT
AS

SET NOCOUNT ON

INSERT INTO [Травмы спортсменов] (SportsmenID, TypeOfInjuryID)
  select SportsmenID, TypeOfInjuryID 
     from inserted
;
-- вот тока полей остальных в представлении нет...



Вся ваша трихомудь там ни к чему.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028433
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Так я наверное к вам и обращаюсь, чтобы вы мне помогли понять, разве нет?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028435
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Если бы я понимал, я бы писал что-нибудь?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028437
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicka121212
aleks222,

Так я наверное к вам и обращаюсь, чтобы вы мне помогли понять, разве нет?


Чтобы понять ответ - надо его знать на 99.999%.

У вас и 0.0001% понимания нет.
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028440
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Вы странно рассуждаете....

Если уже знаешь 99% ответа, то зачем нужна чья-либо помощь?
...
Рейтинг: 0 / 0
Добавление данных из триггера в представление
    #40028447
Nicka121212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
alexeyvg
пропущено...
В таблицу, просто синтаксис у вас дикий.
SELECT Классификация FROM [Виды травм] возвращает кучу записей в выходной рекордсет
А предложение VALUES требует скалярные значения, а не рекордсеты.

Выглядит, как попытка оператором "+" сложить 2 картинки, на которых нарисованы цифры. И вопрос "разве это не сложение?"


В доме повешенного не говорят о веревке.
Но.
Тут дело не в синтаксисе.
Тут дело в понимании.
Точнее НЕпонимании того, чего он хочет сделать.

ЗЫ. В варианте тредстартера ничего вставить в таблицу не получится.
Вставлять нечего.

ЗЗЫ. Православный триггер выглядит вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER TRIGGER InsertSportsman ON InjuriesSportsmen
INSTEAD OF INSERT
AS

SET NOCOUNT ON

INSERT INTO [Травмы спортсменов] (SportsmenID, TypeOfInjuryID)
  select SportsmenID, TypeOfInjuryID 
     from inserted
;
-- вот тока полей остальных в представлении нет...



Вся ваша трихомудь там ни к чему.


Спасибо, но могли просто спокойно написать, а не устраивать тут не пойми что.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление данных из триггера в представление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]