Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление данных из триггера в представление / 17 сообщений из 17, страница 1 из 1
16.12.2020, 17:19
    #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
16.12.2020, 17:26
    #40028386
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление данных из триггера в представление
Код: sql
1.
2.
INSERT INTO [Травмы спортсменов] VALUES((SELECT SportsmenID FROM Спортсмены), (SELECT TypeOfInjuryID FROM [Виды травм]), 
	(SELECT Классификация FROM [Виды травм]), (SELECT [Тип травмы] FROM [Виды травм]))


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

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

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

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

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

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




Но разве тут я не в таблицу добавляю ?
...
Рейтинг: 0 / 0
16.12.2020, 19:03
    #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
16.12.2020, 19:12
    #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
16.12.2020, 19:17
    #40028433
Nicka121212
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление данных из триггера в представление
aleks222,

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

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

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


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

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

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

Если уже знаешь 99% ответа, то зачем нужна чья-либо помощь?
...
Рейтинг: 0 / 0
16.12.2020, 19:33
    #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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление данных из триггера в представление / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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