Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
eric555 Member Откуда: Москва Сообщений: 397 |
Уважаемые Гуру, у меня куча вопросов... Попробую описать ситуацию на простых примерах, на которых и тестирую свою задумку... Пример взял из BOL про триггеры INSTEAD OF. Таблица с данными:
Поле(функцию) User_id добавил сам для определения id пользователя, внесшего запись. Бинарная таблица с правами:
Последние два поля - чисто "для себя", так как права на запись и/или чтение выставляю для каждого конкретного пользователя в SQL Management Studio. Селект вьюхи(InsteadView):
Т.е. подключился пользователь и увидел только свои внесенные записи, если подключился пользователь с ID равным "6", он увидел всю группу. Права для него раздам уже в самом SQL. Либо только чтение всей группы, либо чтение и редактирование всей группы. Теперь вопросы:)) 1) Правильно ли я все сделал? 2) Есть ли ошибки или пожелания? 3) Как правильно написать триггеры для данной вью на удаление, вставку и обновление? При создании триггера:
Пишет: Сообщение 213, уровень 16, состояние 1, процедура InsteadTrigger, строка 7 Имя столбца или число предоставленных значений не соответствует определению таблицы. 4) Нужен ли он(триггер) вообще, если я вношу все данные через формы Access через соединение ODBС?? В "боевых" таблицах будут поля Varchar, Bit, Int и, возможно, Blob. Будет много подчиненных таблиц и справочников. Заранее благодарю за помощь! З.Ы. Прошу отнестись с пониманием, данным вопросом занялся относительно недавно. Триггеры никогда не приходилось писать... |
||||||||||||||||||||||
17 авг 14, 21:11 [16452862] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
И что непонято из этого сообщения ?
А ваш Access сможет сам разобраться, в какую именно таблицу нужно добавлять данные У вас же в запросе 2 таблицы |
||||
18 авг 14, 10:37 [16454424] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Эмм... смысл не понятен.
Вот именно, что он сам разбирается и записывает без триггера. |
||||
18 авг 14, 17:31 [16457989] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
"Имя столбца или число предоставленных значений не соответствует определению таблицы." Вы думаете, что сервер сам должен угадать, какие значения в какие поля нужно добавлять ?
Сразу в две таблицы ? |
||||||
18 авг 14, 17:35 [16458013] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Ладно, сам разберусь!
Нет, в одну. Во вью отображены все поля. Я оставлю для отображения и внесения данных только 2 поля из основной таблицы: "Color" и "Material". |
||||
18 авг 14, 17:44 [16458088] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Начните с чтения синтаксиса команды INSERT
И откуда возьмутся значения для остальных полей ? |
||||
18 авг 14, 17:46 [16458098] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11562 |
INSERT INTO BaseTable ([имя поля 1], [имя поля 2]) SELECT Color, Material FROM inserted странный триггер у вас, может проверку надо добавить на вставку одинаковых значений , например |
18 авг 14, 17:48 [16458113] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Селект вьюшки внимательно посмотрите, поймете смысл остальных полей. |
||
18 авг 14, 19:42 [16458674] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Konst_One, Спасибо за подсказку! Буду пробовать дальше...
|
||||
18 авг 14, 19:44 [16458685] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||||
18 авг 14, 19:45 [16458691] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Гавриленко Сергей Алексеевич, Ну так укажите мне на ошибку! Я открываю вью в access'е и прямо вписываю значения. Он принимает, все отлично вставляется. Я потому и спрашиваю. Как триггер работает, нужен ли он? Если бы из BOL все было понятно, я бы не стал сюда ничего писать! |
18 авг 14, 19:50 [16458705] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ну подумайте сами, если у вас access "Он принимает, все отлично вставляется. " и не вызывает срабатываение триггера, то нужне вам триггер или нет А если вам нужно, чтобы триггер срабатывал, то зачем тогда access "Он принимает, все отлично вставляется. " |
||
18 авг 14, 20:12 [16458766] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
Glory, Очень хорошо объясняете, все предельно понятно! Ощущается польза от форума и от профессионалов. |
18 авг 14, 21:47 [16459066] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
Если бы вы потрудились полность прочитать статью документации по CREATE VIEW, то узнали бы об опции VIEW_METADATA, зачем она нужна и как влияет на обновляемость представлений. |
||
18 авг 14, 22:02 [16459145] Ответить | Цитировать Сообщить модератору |
eric555 Member Откуда: Москва Сообщений: 397 |
А я о ней и не знал. Теперь узнал! |
||
18 авг 14, 22:08 [16459178] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |