Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Прилетаю, значит, я на глюкодром...
|
|||
|---|---|---|---|
|
#18+
В базовой таблице есть поля, у которых задано значение по молчанию, а сами они NOT NULL. Делаю VIEW с группировками, с JOIN таблицы на саму себя, со всякими прочими наворотами (иерархический справочник). Пропускаю эти поля через VIEW, смотрю на них в QA (в дереве объектов раскрываю Columns) - они отображаются как NOT NULL, как и положено. Делаю еще один запрос на базе уже сделанного запроса пропускаю эти поля через второй VIEW - они в QA уже выглядят как NULL. Ну выглядят и бог с ним, мне это глубоко безразлично. Я говрою об этом только потому, что это может иметь отношение к тому, что уже не безразлично. Естественно, без INSTEAD-триггеров, запрос необновляемый. Цепляю к нему INSTEAD-триггеры, сам запрос делаю с опцией WITH VIEW_METADATA (для устранения проблем, о которых говорилось ранее многократно). Пишу в том же QA команду добавления строки во VIEW (не важно, в первый или во второй - результат один и тот же). Если в команде добавления строки перечисляю все поля и указываю для них значения, все проходит на ура. Если опускаю те поля, о которых сказано выше, выскакивает ошибка несколько раз - по количеству пропущенных в команде полей: Server: Msg 233, Level 16, State 2, Line 1 The column 'Fld' in table 'Tbl' cannot be null. Да я сам знаю, что они не могут быть Null. Но в таблице-то для них указаны значения по умолчанию! И моя задача - чтобы при вставке строки подставились значения по умолчанию. Ок, переписываю команду вот так: insert into tbl (Fld1, Fld2, Fld3...) values (default, default, default,...) Если я добавляю в команду под одному полю и одному default, то количество сообщений об ошибке 233, одновременно вываливающихся в QA соответственно уменьшается. Наконец я перечисляю все поля и уже потираю с удовольствием руки, полагая, что ну наконец все ошибки пропадут. Запускаю команду - теперь выскакивает уже другая ошибка: Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'Fld', table 'SomeDB.dbo.Tbl'; column does not allow nulls. INSERT fails. The statement has been terminated. Что за фигня! Я же не Null туда вставлял, а default! Самое интересное, что такая команда вставки (без default-ов), вставленная в текст хранимой процедуры, либо в текст пакета, прерывает весь пакет или всю хранимую процедуру еще до начала их выполнения. Увидев этот эффект, я просто выпал в осадок. Запускаю хранимую процедуру, у которой злосчастный insert стоит в самом конце, а первой строчкой стои set nocount on в отладчике выскакивает в нижней части окна ошибка 233, и указатель текущей инструкции вообще не появляется! То есть set nocount on даже не пытается выполниться. Ок, делаю в просто в окне QA пакет: create table ttt (ID int primary key) GO insert into ... GO запускаю пакет на выполнение - create table НЕ ВЫПОЛНЯЕТСЯ!!! С той же ошибкой 233. Ладно, думаю, возможно, очередной глюк. Поставил SP1 - ничего не изменилось! Вот такие пироги... Получается, что значения нужно сгенерить конкретные на клиенте. А я как раз этого хочу избежать. Мне нужно, чтобы подставились как раз значения по умолчанию - с их помощью регистрируется, кто выполнил команду, с какого окомпьютера, когда и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 07:25 |
|
||
|
Прилетаю, значит, я на глюкодром...
|
|||
|---|---|---|---|
|
#18+
По идее конечно правильно, ведь View не знает, что его NOT NULL поля на самом деле имеют дефолтовое значение, поэтому и спрашивает их (или ругается) Обойти - только в триггере вызывать функции, которые будут возвращать юзера, компутер, команду и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 08:29 |
|
||
|
Прилетаю, значит, я на глюкодром...
|
|||
|---|---|---|---|
|
#18+
Угу. Мне тоже приходится явно указывать все поля при вставке во view с instead триггером. Иначе засыпет сообщениями о том, что поле такое-то не может быть NULL, хотя оно в таблице и default имеет, а часть из них вообще вычисляемые! Вот так и пихаю во все по моему мнению "левые" поля dummy-значения, а потом они уже в instead триггере либо заменяются на default'ы, либо вычисляются, либо вообще игнорируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 10:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32009506&tid=1826198]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 453ms |

| 0 / 0 |
