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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

смысл упираться и постить куски доки?
конкретное задание ТСа в первом посте, приведите свой вариант триггера, мы обсудим.
...
Рейтинг: 0 / 0
SQL Задание
    #39605939
Jaffar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дедушка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
SQL Задание
    #39605970
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jaffar,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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