Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Пытаюсь сделать update во view
CREATE VIEW tt
AS
SELECT [tid],[value], 1 as _id FROM [dbo].[te1]
UNION ALL
SELECT [tid],[value], 2 as _id FROM [dbo].[te2]
А в ответ
Невозможно обновить представление UNION ALL "dbo.tt", так как столбец секционирования не найден.
Что это за столбец секционирования?
1 июн 11, 17:14    [10747538]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Да, забыл. te1 и te2 по структуре идентичны
CREATE TABLE [dbo].[te1](
	[tid] [int] IDENTITY(1,1) NOT NULL,
	[value] [varchar](20)  NOT NULL,
 CONSTRAINT [PK_te1] PRIMARY KEY CLUSTERED 
(
	[tid] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
1 июн 11, 17:19    [10747578]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
saxix
Что это за столбец секционирования?

Читайте доку.

Разделы: Обновляемые представления, Секционированные представления...
1 июн 11, 17:25    [10747613]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
baracs
saxix
Что это за столбец секционирования?

Читайте доку.

Разделы: Обновляемые представления, Секционированные представления...

Спасибо за подсказку, сделал в таблицах PRIMARY KEY CHECK (TID BETWEEN X1 and X2)
жаль что пришлось из представления убрать table_id, с ним ни в какую не хочет.
1 июн 11, 18:00    [10747955]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Подскажите, а возможно сделать (TID BETWEEN X1 and X2) как-нибудь по другому. В данном случае надо знать, что за пределы диапазона залезать не надо. Можно сделать на все таблицы что-то наподобие единого счётчика?
1 июн 11, 18:10    [10748034]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
saxix
Можно сделать на все таблицы что-то наподобие единого счётчика?
Но это же не решит проблему обновления view.
А зачем вам вообще так много одинаковых таблиц?
2 июн 11, 01:35    [10749756]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Mnior
saxix
Можно сделать на все таблицы что-то наподобие единого счётчика?
Но это же не решит проблему обновления view.
А зачем вам вообще так много одинаковых таблиц?

Это упрощенная схема. На самом деле там разнородные таблицы. Смысл такой. Есть корневая таблица (компьютер), которая связана с таблицами-справочниками (софт, оперативная память, жесткий диск и т.п). Есть таблица,в которую записываются запросы на изменения значений в корневой таблице. Типа такого...заменить (update) в таблице (компьютер) параметр soft_id со значением 1 на 2. Таблица с запросами на изменения связана только с таблицей компьютер. Далее есть процедура, которая автоматически по наличию запроса изменяет значения.
3 июн 11, 15:44    [10759824]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Чем больше упрощаю, тем больше путаюсь
В таблице query ... query_type (тип изменения..insert, update или delete)

К сообщению приложен файл. Размер - 25Kb
3 июн 11, 16:08    [10760105]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Чтобы одним запросом (одна запись в таблице query) сделать любой из трех типов операций со справочниками, да ещё и усложнил связями многое-ко многим.
3 июн 11, 16:10    [10760129]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
saxix,

Вам надо пересмотреть схему БД. Справочник комплектующих должен быть один. Просто введите сущность "тип комплектующей".
3 июн 11, 16:39    [10760467]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
invm
saxix,

Вам надо пересмотреть схему БД. Справочник комплектующих должен быть один. Просто введите сущность "тип комплектующей".

Там на самом деле ещё сложнее. Там ещё есть и местоположение, и операции, которые производятся на компьютере, и люди и т.п.
3 июн 11, 16:44    [10760519]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
saxix
invm
saxix,

Вам надо пересмотреть схему БД. Справочник комплектующих должен быть один. Просто введите сущность "тип комплектующей".

Там на самом деле ещё сложнее. Там ещё есть и местоположение, и операции, которые производятся на компьютере, и люди и т.п.

Да, ещё и к справочникам линкуются в некоторых случаях ещё справочники, там иерархия будь здоров.
3 июн 11, 16:45    [10760529]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
saxix,

И чем это все мешает иметь единый справочник? Если завтра появится новый тип комплектухи, будете БД переделывать?
3 июн 11, 16:49    [10760578]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
invm
saxix,

И чем это все мешает иметь единый справочник? Если завтра появится новый тип комплектухи, будете БД переделывать?

Это знакомому студенту помогаю. Препод говорит что таблиц мало ))))
3 июн 11, 16:52    [10760609]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
saxix
invm
saxix,

И чем это все мешает иметь единый справочник? Если завтра появится новый тип комплектухи, будете БД переделывать?

Это знакомому студенту помогаю. Препод говорит что таблиц мало ))))

Да и в данном случае не совсем верно будет. Есть понятие - конфигурационная единица. По смыслу работы ее надо хранить в отдельной таблице.
3 июн 11, 17:06    [10760686]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
saxix,

Препод готовит будущих быдлокодеров:)
3 июн 11, 17:06    [10760687]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
WarAnt
saxix,

Препод готовит будущих быдлокодеров:)

Это не программисты, но что-то с информатикой )))
3 июн 11, 17:08    [10760698]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
saxix, нормальная схема.

saxix
Типа такого...заменить (update) в таблице (компьютер) параметр soft_id со значением 1 на 2.
...операций со справочниками ...
Что-то не так. Разнородные вещи нельзя связывать по внешней схожести.
У вас для каждой pc_* должная быть своя таблица изменений (представьте что в ps_soft есть ещё колонка подтип или вид лицензии, или срок подписки). Т.е. надо ещё 3 таблицы ссылающиеся на query, вместо колонки table_id (в системе не должно быть мета-данных).

Препод молодец, не будут плодиться быдло-кодеров пишущих бесполезных "универсальных монстров".

Если будете жаловаться, что надо будет писать много кода (много процедур/триггеров/представлений). Это всё фигня - при неизменной системе код статичен, а расширяется очень легко. Расширение системы, как мета-программный слой (DDL), можно также автоматизировать динамикой.

+ Просто в воздух
DECLARE	 @Result	Int
	,@ProcName	SysName
	,@Param1	Int
	,@Param2	Int
	,@Param3	Int

SET @ProcName = 'spMyProc'

EXEC @Result = @ProcName
	 @Param1
	,@Param2
	,@Param3 OUT
4 июн 11, 01:30    [10762406]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Mnior,

попытаюсь понять вашу схему. Для сохранения истории изменений я хотел в таблицы-адаптеры добавить поле статус. То есть при изменении какого-то параметра создавалась бы новая запись со статусом "действительно" а старая запись приобретала статус "НЕдействительно"
9 июн 11, 16:08    [10790701]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
saxix, отлично!
Только статус вроде как не нужен, последняя запись в группе и есть "активная".
Если храните селективную историю, то надо хранить и её основные общие данные (дата, и т.п.). Не?
9 июн 11, 16:29    [10790874]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Mnior
saxix, отлично!
Только статус вроде как не нужен, последняя запись в группе и есть "активная".
Если храните селективную историю, то надо хранить и её основные общие данные (дата, и т.п.). Не?

Верно. Я привел упрощенную версию. На самом деле у меня ещё есть поля "дата создания записи", "статус записи", "пользователь внёсший запись"
11 июн 11, 01:13    [10800733]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
saxix
ещё есть поля "дата создания записи", "статус записи", "пользователь внёсший запись"
КО: и все эти версии ссылаются на эти записи.

Странно, а что мы тут мусолим. Тема то исчерпана (нет никакой view уже) много постов назад.
11 июн 11, 12:56    [10801444]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по обновлению View  [new]
saxix
Member

Откуда:
Сообщений: 735
Mnior
saxix
ещё есть поля "дата создания записи", "статус записи", "пользователь внёсший запись"
КО: и все эти версии ссылаются на эти записи.

Странно, а что мы тут мусолим. Тема то исчерпана (нет никакой view уже) много постов назад.

Первую фразу не понял.
Впринципе работа вроде бы практически сдана, и в помощи больше не нуждаются. Но я всё же чисто ради интереса доделаю всё.
12 июн 11, 00:09    [10802724]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить