Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Задание / 24 сообщений из 24, страница 1 из 1
18.02.2018, 11:19
    #39603625
Rustam0712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Создать триггер, запрещающий пользователю иван добавить строки в таблицу карта, если в колонке город встречается москва.

Выручайте! Не знаю как((
...
Рейтинг: 0 / 0
18.02.2018, 12:27
    #39603643
SQL Задание
Rustam0712,
открывается любой текстовый редактор и в нем набирается запрос на создание триггера, начинающийся со слов Create trigger. Далее написанный код отправляется любым доступным способом на исполнению серверу и вуа ля.
...
Рейтинг: 0 / 0
18.02.2018, 12:42
    #39603648
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
либо показывайте ваше решение и задавайте конкретные вопросы
либо вам сюда: Студентам, желающим помощи
...
Рейтинг: 0 / 0
18.02.2018, 15:37
    #39603684
Rustam0712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
creat trigger
on КАРТА
after insert
as
begin
if (select карта
from город
where


End
...
Рейтинг: 0 / 0
18.02.2018, 15:41
    #39603687
Rustam0712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Дедушка,вот мои достижения...не могу понять какое условие необходимо

creat trigger
on КАРТА
after insert
as
begin
if (select карта
from город
where


End
...
Рейтинг: 0 / 0
18.02.2018, 16:13
    #39603697
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Rustam0712,

т.к. вам нужно "триггер, запрещающий пользователю добавить строки в таблицу",
то вместо after insert нужно instead of
читать тут и тут
по первой ссылке обратите внимание на пример А (как на общее направление)

"select карта from город where" у вас [карта] это таблица, а [город] это колонка
напишите для начала просто селект выводящий 1 если в таблице уже есть город Москва читать про exists

"запрещающий пользователю иван" - тут несколько неопределённо, но для начала читать про current_user
...
Рейтинг: 0 / 0
20.02.2018, 23:33
    #39605151
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
ДедушкаRustam0712,

т.к. вам нужно "триггер, запрещающий пользователю добавить строки в таблицу",
то вместо after insert нужно instead of Зачем? Зачем лепить instead of там где он совсем не нужен?
...
Рейтинг: 0 / 0
21.02.2018, 07:14
    #39605199
SQL Задание
MindДедушкаRustam0712,

т.к. вам нужно "триггер, запрещающий пользователю добавить строки в таблицу",
то вместо after insert нужно instead of Зачем? Зачем лепить instead of там где он совсем не нужен?то, что человек изучает инструмент триггеров и получил вполне себе конкретное задание на закрепление пройденного материала - в твою голову не приходит?
...
Рейтинг: 0 / 0
21.02.2018, 21:52
    #39605831
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Добрый Э - ЭхMindпропущено...
Зачем? Зачем лепить instead of там где он совсем не нужен?то, что человек изучает инструмент триггеров и получил вполне себе конкретное задание на закрепление пройденного материала - в твою голову не приходит?

Конструирование триггеров INSTEAD OFГлавное преимущество триггеров INSTEAD OF в том, что они позволяют поддерживать обновления для таких представлений, которые обновлять невозможно. Чтобы представление на основе нескольких базовых таблиц поддерживало вставку, обновление и удаление данных в нескольких таблицах, следует использовать триггер INSTEAD OF. Другое преимущество триггера INSTEAD OF состоит в том, что он обеспечивает логику кода, при которой можно отвергать одни части пакета и принимать другие.

Триггер INSTEAD OF может выполнять следующие действия:

пропускать части пакета;

не обрабатывать часть пакета и сохранять строки с неполадками в журнале;

выполнять альтернативное действие в случае ошибки.Что именно из вышеперечисленного нужно было человеку?

В следующий раз когда меня спросят как обновить поле A значением B где поле C = X я скажу что надо использовать курсор, а что, конеретное себе задание, пусть школяры поизучают.
...
Рейтинг: 0 / 0
21.02.2018, 21:56
    #39605834
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Mind,

смысл упираться и постить куски доки?
конкретное задание ТСа в первом посте, приведите свой вариант триггера, мы обсудим.
...
Рейтинг: 0 / 0
22.02.2018, 08:56
    #39605939
Jaffar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
ДедушкаMind,

смысл упираться и постить куски доки?
конкретное задание ТСа в первом посте, приведите свой вариант триггера, мы обсудим.

обсуди:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create trigger t_Table_BI  on t_TABLE
after insert 
AS
BEGIN
if(suser_name() = 'Ivan' and exists(select 1 from inserted i where i.City like '%Москва%'))
begin
  raiserror('Ваня тебе нельзя вставлять.', 1000, 1, 'aa')
  rollback tran
  return
end
END
...
Рейтинг: 0 / 0
22.02.2018, 09:54
    #39605970
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Jaffar,

т.е. вы предлагаете сначала вставить данные в таблицу (хотя задание НЕ вставлять)
потом сделать некую проверку
и если проверка не прошла откатить транзакцию
я вас правильно понял? :)

вопрос а если хитрый Петя в это время сделал селект с nolock?
...
Рейтинг: 0 / 0
22.02.2018, 10:15
    #39605981
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Дедушкавопрос а если хитрый Петя в это время сделал селект с nolock?
То хитрый Петя ССЗБ, ибо сказано, что READ UNCOMMITTED может приводить к грязному чтению, т.е. чтению строк, которых в базе не было и не будет (в закоммиченном виде, понятное дело).

Городить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.
Я бы задумался об instead of только в том случае, если бы в постановке явно было написано, что ошибочные данные не должны быть доступны иным транзакциям, читающим в READ UNCOMMITTED, только тогда бы требовалась предобработка в instead of триггере.
...
Рейтинг: 0 / 0
22.02.2018, 10:20
    #39605984
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
MinamotoДедушкавопрос а если хитрый Петя в это время сделал селект с nolock?
То хитрый Петя ССЗБ, ибо сказано, что READ UNCOMMITTED может приводить к грязному чтению, т.е. чтению строк, которых в базе не было и не будет (в закоммиченном виде, понятное дело).

Городить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.
Я бы задумался об instead of только в том случае, если бы в постановке явно было написано, что ошибочные данные не должны быть доступны иным транзакциям, читающим в READ UNCOMMITTED, только тогда бы требовалась предобработка в instead of триггере.
Вставить, потом думать а можно ли было вставлять, это да решение, права кстати тоже есть в sql. Ну и вариант что вставить он может 1кк записей, а потом будем откатывать?
...
Рейтинг: 0 / 0
22.02.2018, 10:30
    #39605989
SQL Задание
Minamoto,

Создать триггер, запрещающий пользователю иван добавить строки в таблицу карта, если в колонке город встречается москва.

Данный триггер AFTER не запрещает вставку, он откатывает транзакцию. Формально задание не выполнено, тк вставка была произведена.
...
Рейтинг: 0 / 0
22.02.2018, 11:02
    #39606002
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Зачем споритеMinamoto,

Создать триггер, запрещающий пользователю иван добавить строки в таблицу карта, если в колонке город встречается москва.

Данный триггер AFTER не запрещает вставку, он откатывает транзакцию. Формально задание не выполнено, тк вставка была произведена.
Я бы сказал, что это на усмотрение преподавателя, который будет проверять выполнение задания.
Один может сказать, что вставка завершена тогда, когда проведена операция изменения страниц, и тогда требуется instead of insert. Другой может сказать, что вставка завершена при завершении транзакции, содержащей операцию вставки, и тогда достаточно after insert.
Третий вообще сам не понимает различия в триггерах, и ему любая реализация подойдет.

С точки зрения реализации в реальной работе я чаще видел реализации с after insert - запрет на вставку в instead of ни разу не видел.

Какой преподаватель будет проверять работу (и какую реализацию выбрать) - знает только ТС, поэтому спорить, действительно, не о чем.
...
Рейтинг: 0 / 0
22.02.2018, 12:05
    #39606060
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
MinamotoГородить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.ещё один молодой и горячий в компанию к Jaffar... :)
и дело не в преподавателе, а в логике
впрочем, если вам ближе "гланды череж ж*пу", то кто я такой, чтобы...
...
Рейтинг: 0 / 0
22.02.2018, 12:16
    #39606066
dies irae
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
ДедушкаMinamotoГородить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.ещё один молодой и горячий в компанию к Jaffar... :)
и дело не в преподавателе, а в логике
впрочем, если вам ближе "гланды череж ж*пу", то кто я такой, чтобы...

и меня тогда запиши в молодые и горячие (хотя это, к сожалению, уже давно не так)
в данной задаче абсолютно не нужен instead триггер.
Кроме того, что на них существуют дополнительные ограничения, и того, что код будет длиннее, его придётся переписывать при добавлении/удалении полей в таблицу.
...
Рейтинг: 0 / 0
22.02.2018, 12:29
    #39606073
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
ДедушкаMinamotoГородить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.ещё один молодой и горячий в компанию к Jaffar... :)
и дело не в преподавателе, а в логике
впрочем, если вам ближе "гланды череж ж*пу", то кто я такой, чтобы...Если я молодой и горячий, то вы, по всей видимости, старый и холодный? :)

Я обычно начинаю работать строго по формальной логике тогда, когда нужно испортить взаимодействие с определенным человеком - "как написали, так и сделал, а то, что не работает - так это вы так написали". Когда нужно сделать, чтобы работало, нужно выяснять, какой результат в итоге должен получиться, и реализовать, исходя из требуемого результата, осознавая (по возможности) ограничения и особенности выбранного подхода.
...
Рейтинг: 0 / 0
26.02.2018, 21:42
    #39607545
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
ДедушкаMinamotoГородить же instead of триггер для запрета вставки, с моей точки зрения, излишне, достаточно сделать постобработку с rollback при нарушении условий.ещё один молодой и горячий в компанию к Jaffar... :)
и дело не в преподавателе, а в логике
впрочем, если вам ближе "гланды череж ж*пу", то кто я такой, чтобы...Лепить на каждую таблицу INSTEAD OF это и есть гланды через ж*пу.

С тем что триггер это костыль надеюсь все согласны? А INSTEAD OF триггер это костыль в квадрате. Применяется обычно когда вас чем то не устраивает стандартная вставка в таблицу, а код поменять нельзя, например исходников приложения нет. Для банального же запрета вставки подошел бы обычный CHECK Constraints, но препод придумывал задание на проверку знаний триггеров.
...
Рейтинг: 0 / 0
26.02.2018, 21:45
    #39607546
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
MindДедушкапропущено...
ещё один молодой и горячий в компанию к Jaffar... :)
и дело не в преподавателе, а в логике
впрочем, если вам ближе "гланды череж ж*пу", то кто я такой, чтобы...Лепить на каждую таблицу INSTEAD OF это и есть гланды через ж*пу.

С тем что триггер это костыль надеюсь все согласны? А INSTEAD OF триггер это костыль в квадрате. Применяется обычно когда вас чем то не устраивает стандартная вставка в таблицу, а код поменять нельзя, например исходников приложения нет. Для банального же запрета вставки подошел бы обычный CHECK Constraints, но препод придумывал задание на проверку знаний триггеров. секста
о сектанты подтянулись
...
Рейтинг: 0 / 0
26.02.2018, 21:48
    #39607547
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Зачем споритеДанный триггер AFTER не запрещает вставку, он откатывает транзакцию. Формально задание не выполнено, тк вставка была произведена.Так может рассуждать только человек не понимающий приципов работы транзакций.
MinamotoЗачем споритеMinamoto,

Создать триггер, запрещающий пользователю иван добавить строки в таблицу карта, если в колонке город встречается москва.

Данный триггер AFTER не запрещает вставку, он откатывает транзакцию. Формально задание не выполнено, тк вставка была произведена.
Я бы сказал, что это на усмотрение преподавателя, который будет проверять выполнение задания.
Какой преподаватель будет проверять работу (и какую реализацию выбрать) - знает только ТС, поэтому спорить, действительно, не о чем.А еще задание ничего не говорит о случае если пользователь вставляет сразу две строки, где только одна не удовлетворяет условию, что должно произойти со второй? От ответа на этот вопрос по сути и будет зависеть какой триггер использовать.
...
Рейтинг: 0 / 0
27.02.2018, 10:43
    #39607682
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Зачем споритеMinamoto,

Создать триггер, запрещающий пользователю иван добавить строки в таблицу карта, если в колонке город встречается москва.

Данный триггер AFTER не запрещает вставку, он откатывает транзакцию. Формально задание не выполнено, тк вставка была произведена.

в колонке - какой? вставляемой или такая запись уже есть в таблице?
Преподаватели - дятлы
...
Рейтинг: 0 / 0
27.02.2018, 14:15
    #39607875
Jaffar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Задание
Все,

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


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