Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
Есть у меня некая таблица с вычисляемыми полями и view для нее. Для view существует instead of триггер. Вот пример: create table t1( objectGUID uniqueidentifier rowguidcol not null unique, name sysname, cn as name ) create view t1v as select * from t1 create trigger ins_t1v on t1v instead of insert, update as insert into t1 (objectGUID, name) select objectGUID, name from inserted Все взято с потолка для упрощенного примера, так что особого смысла в этих определениях не ищите. Пытаюсь вставить строку во view insert into t1v (objectGUID, name) values (newid(), 'test1') Получаю ошибку "The column 'cn' in table 't1v' cannot be null.". Если в insert добавить cn, то все пройдет нормально, его значение проигнорируется и в select'е будет видно правильное значение для поля cn. Так что мне теперь, в insert'ы добавлять перечисляемые колонки ?! А получше способа нет ? 8-((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 12:21 |
|
||
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
create view t1v with viewmeta_data ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 12:43 |
|
||
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
Пардон, подчерк не туда воткнул: with view_metadata... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 12:45 |
|
||
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
Не помогло. Несмотря на то, что в BOL написано "When a view is created WITH VIEW_METADATA, all its columns (except for timestamp) are updatable if the view has INSERT or UPDATE INSTEAD OF triggers". Приврали они, видать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 12:58 |
|
||
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
Мда... Нашлось тут решение, как бы помягче выразиться... Создаю функцию create function FuckingNull() returns sysname as begin return '' end и определение таблицы меняю так: create table t1( objectGUID uniqueidentifier rowguidcol not null unique, name sysname not null, cn as name + dbo.FuckingNull() ) Колонка cn становится "нулябельной". Только, может быть, кто-то подскажет более приличный способ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 13:12 |
|
||
|
Updatable views & computed columns
|
|||
|---|---|---|---|
|
#18+
Еще такой трабл, который не лечится dummy - функцией. Если определение поля примерно следующее: objectGUID uniqueidentifier UNIQUE NOT NULL DEFAULT newid(), то поле во вью тоже не допускает null, но default от базовой таблицы на него не распространяется! То есть все-таки придется в insert'ы добавлять тупые дефолты (( Народ, посоветуйте что-нибудь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2001, 13:45 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1826318]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 299ms |

| 0 / 0 |
