powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / VIEW & UNION
8 сообщений из 8, страница 1 из 1
VIEW & UNION
    #32059192
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа плз help
Есть одна таблица (Т) сумашедших размеров ( >500000 строк) с фин информацией за несколько лет. Реально юзеры обращаются к информации на 6 месяцев назад, ну а для отчетов надо все из-за чего отчет генерится минут 5, а надо до 1 мин. Хотел сделать две таблицы - одна до 1-5-2002 (Т1) а другая после(Т2) с которой все будут работать. Для отчетов снять итоговую строку с Т1 и использовать ее. Чтобы не менять логику на клиенте сделал проекцию с именем таблицы(T). Все было весело до момента попытки обновить представление. SQL ругается на union в проекции из-за чего модифицировать ее не получается. Как быть ?
Пробовал на простых примерах :

CREATE TABLE [dbo].[T2] (
[F1] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[UID] [uniqueidentifier] NOT NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[T1] (
[F1] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[UID] [uniqueidentifier] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[T2] WITH NOCHECK ADD
CONSTRAINT [PK_T2] PRIMARY KEY CLUSTERED
(
[UID]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[T1] WITH NOCHECK ADD
CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED
(
[UID]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[T2] WITH NOCHECK ADD
CONSTRAINT [DF_T2_UID] DEFAULT (newid()) FOR [UID]
GO

ALTER TABLE [dbo].[T1] WITH NOCHECK ADD
CONSTRAINT [DF_T1_UID] DEFAULT (newid()) FOR [UID]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.v12
AS
SELECT *
FROM t1
UNION
SELECT *
FROM t2


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Результат такой же.
SQL2K-standart
Подскажите плз !!!
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059195
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала поставьте UNION ALL
А потом почитайте
BOL - Creating and Maintaining Databases - Views - Creating a View - Creating a Partitioned View - Updatable Partitioned Views
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059214
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4Glory
union all поставил - безполезно
по поводу BOL:
Updatable Partitioned Views
A view is considered an updatable partitioned view if:

The view is a set of SELECT statements whose individual result sets are combined into one using the UNION ALL statement. Each individual SELECT statement references one SQL Server base table. The table can be either a local table or a linked table referenced using a four-part name, the OPENROWSET function, or the OPENDATASOURCE function (you cannot use an OPENDATASOURCE or OPENROWSET function that specifies a pass-through query
Пардон за слабое знание вражеского языка, но как я понял - это набор селектов, которые самостоятельно выбирают данные с помощью union all. Каждый селект ссылается на одну таблицу. Ну далее как я понял идут слова которые не имеют отношения к моему воппросу.
Так я вроде бы все условия выполнил. Может Вы подскажете в чем дело для тестовых таблиц Т1 и Т2, может я зря поставил в них primary key ?
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059216
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как именно он ругается?
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059221
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4Garya
Если из QA то так
delete from v12 where uid='A664EAD3-BD78-49F8-8829-5216D95447E7'
Server: Msg 4436, Level 16, State 12, Line 1
UNION ALL view 'v12' is not updatable because a partitioning column was not found.
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059259
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал новое удивительное ср-во sql2k : INSTEAD OF
CREATE TRIGGER trg_d_v12 ON v12 INSTEAD OF delete
AS
declare @F1 nvarchar(500),@UID uniqueidentifier
select @f1=f1 from deleted
select @UID=UID from deleted
if @f1<=5 delete from t1 where uid=@UID
if @f1>5 delete from t2 where uid=@UID
go
delete from v12 where uid='{A664EAD3-BD78-49F8-8829-5216D95447E7}'
Заработало.
Щас попробую на вставку и обновление
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059419
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
VIEW & UNION
    #32059425
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про триггера - не забывайте, что триггер срабатывает один раз, сколько бы строк не удалялось/обновлялось.
А Ваш сработает только для одной строки.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / VIEW & UNION
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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