Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.08;
Скачать: CL | DM;

Вниз

Невозможность использовать Update, если в View есть поле типа Blob   Найти похожие ветки 

 
Malder ©   (2002-03-10 12:58) [0]

То есть, если для таблицы в которой есть Blob поле, сделать Обзор (View) в котором включить это Blob поле из таблицы, то для данного обзора нельзя будет сделать SQL комманду UPDATE. Почему ?
Я не хочу использовать большой Varchar. Неужели, никто не сталкивался с этой проблемой ? Ведь навернякак у вас в Обзоре была необходимость включать Blob поле.


 
roottim   (2002-03-11 09:06) [1]

непонятно!.. если вид создается из нескольких таблиц... то как это вообще возможно... вроде никак!
а если на основе одной таблицы... то какой смысл делать апдейт вида.. если такое можно сотворить с таблицей!


 
Malder ©   (2002-03-11 09:54) [2]

Обзор составляется из одной таблицы. А смысл в том, что в обзор можно включить не все записи. И раздавать гранты на обзор.
С оригинальной таблицей такого не проделаешь...


 
roottim   (2002-03-11 10:00) [3]

возможно просто нельзя!....
это дб написано в гуиде по иб!... то что там существуют ограничения по использованию видов... это однозначно... возможно работа с блоб оно и есть!...
посмотри хелп!... по View.... наерняка что-то сказано по этому поводу!


 
Malder ©   (2002-03-11 17:18) [4]

A view is updatable if:

It is a subset of a single table or another updatable view.
All base table columns excluded from the view definition allow NULL values.
The view"s SELECT statement does not contain subqueries, a DISTINCT predicate, a HAVING clause, aggregate functions, joined tables, user-defined functions, or stored procedures.

If the view definition does not meet these conditions, it is considered read-only.

Note Read-only views can be updated by using a combination of user-defined referential constraints, triggers, and unique indexes.


вроде здесь нет противоречий с использованием Blob...


 
panov ©   (2002-03-11 18:41) [5]

А каким образом ты UPDATE выполняешь?
Приведи код SQL.
Скорее всего, тебе нужно использовать параметризованный запрос с соответствующим типом параметра(TBlobField).


 
Malder ©   (2002-03-11 21:16) [6]

Нет, параметры не работают.

Дело в том, что невозможно выполнить даже простейший SQL оператор, типа:

UPDATE Clients SET Telefon="12345" Where Fax="6789"

То есть, в запросе даже не обновляется BLOB ! Просто принципиально программа не работает, если в обзоре есть Blob поле. Я ВООБЩЕ не понимаю, зачем это... такое ограничение сводит на ноль возможность использования Blob - это поле в более менее серьезной базе не может быть использовано....... ОЧЕНЬ СТРАННО

P.S. Народ, если у вас Blob поля в обзорах (view) работают - скажите, может дело в чем-то другом...


 
Malder ©   (2002-03-12 15:11) [7]

ну ответьте кто-нибудь... Я НЕ ВЕРЮ ЧТО НИКТО НЕ ИСПОЛЬЗУЕТ BLOB В ОБЗОРАХ


 
Scalia   (2002-03-12 15:33) [8]

А почему надо делать UPDATE обзора, а не таблицы ?
Какой в этом глубокий смысл ?


 
ОлегЕ   (2002-03-12 15:52) [9]

Сделал view с полем Blob, как у тебя описано.
Все обновляется, никаких ошибок. Может ты что-то не договариваешь?


 
Malder ©   (2002-03-12 17:19) [10]

Scalia</b<, блин. Смысл во многом:

Create View manager_view as
Select Manager, telefon, fax, Nazvanie, Mestop, Dateperezvon, Primech from Pers
Where Manager = User
With Check Option - именно из-за этого я использую обзор, так как текущий пользователь имеет доступ не ко всем полям ! А с оригинальной таблицей так сделать не могу...

ОлегЕ, ты пытался делать UPDATE таблицы исходной или обзора ? Может ошибся ? Апдейт самой таблицы и у меня действует. Попробуй, пожалуйста, обновить обзор, причем надо чтобы под условие апдейта попадала хоть одна запись. То есть, если сделать:

UPDATE Clients SET telefon="123" Where Fax="789"

и нету клиентов с факсом 789 то все Ок. Надо чтобы UPDATE попытался изменить хоть одну запись...


 
ОлегЕ   (2002-03-12 17:27) [11]

Я делал
update vw_table1 set id=11 where id = 1
где:
1. vw_table1 -
CREATE VIEW VW_TABLE1(
ID,
FD)
AS
select
ID,
FD
from TABLE1;
2. TABLE1 -
CREATE TABLE TABLE1 (
ID "DInteger" NOT NULL,
FD "DBlob");

3. DBlob -
CREATE DOMAIN "DBlob" AS
BLOB SUB_TYPE 0 SEGMENT SIZE 100 CHARACTER SET NONE

Никаких ошибок и проблем, все работает нормально.


 
Scalia   (2002-03-12 17:28) [12]

А что есть Clients - вроде бы не имя таблицы и не имя view...???


 
Malder ©   (2002-03-12 17:35) [13]

Scalia, ну Pers - это и есть Clients

ОлегЕ, в общем все верно. Только вот я не создавал Domain Dblob.
Я использовал просто FD типа blob.

Правда не думаю, что в этом дело. А в твоем случае SIZE 100 сводит на ноль усилия. Я не знаю размер поля, даже приблизительно, поэтому и использую Блоб. А так можно и varchar использовать...


 
ОлегЕ   (2002-03-12 17:52) [14]

Длина сегмента - это не размер поля. Здесь ты заблуждаешься, если думаешь, что только 100 байт можно хранить. На ib.demo.ru есть неплохая статья о CHAR, VARCHR и BLOB, почитай, не помешает.
Пришли на sep@ukrsib.kharkov.com свой адрес, завтра вышлю пример базы, сам попробуй.


 
Scalia   (2002-03-12 17:54) [15]

>Malder © : А Pers - это таблица ! То есть UPDATE все-таки таблицы !?


 
Malder ©   (2002-03-12 19:57) [16]

Scalia, не. Clients - это Обзор. А Pers - сама база =)


 
Malder ©   (2002-03-13 00:11) [17]

народ... плиз... я последний раз поднимаю топик...ну неужели вы не используете Блоб в обзорах ? не верится.. кто нибудь писал рабочие базы ? неужели вы не встречались с этой ошибкой ? ну хоть скажите, что так оно и есть, что Interbase - такая лажа.. пеерйду на MSQL я....с горя...
а-а-а.....


 
drpass ©   (2002-03-13 00:52) [18]

Не надо, парень, не надо...
Завтра я утром на работе сяду и посмотрю, чего там у тебя может не работать. Только не становись еще одним пользователем СУБД от Microsoft


 
Malder ©   (2002-03-13 18:51) [19]

ты в меня вселил надежду =)


 
Malder ©   (2002-03-14 20:53) [20]

просто так пишу =)


 
Slava ©   (2002-03-15 06:46) [21]

Создал тестовую табличку и обзор с блобом.

Сначала понаделал insert"ов в обзор, потом
update"ов (тоже в обзор) - все работает без вопросов


 
Александр С..   (2002-03-15 11:57) [22]

В принципе любой View можно сделать обновляемым, если создать для него триггеры.
Пробовал делать View принципиально не обновляемый (из нескольких таблиц) с триггерами, и все работало прекрасно.
Может такой вариант поможет.



Страницы: 1 вся ветка

Текущий архив: 2002.04.08;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.01 c
3-22581
Дуся
2002-03-13 17:50
2002.04.08
Как сделать инсталляцию с ADO??


1-22650
PEC
2002-03-28 12:00
2002.04.08
Привет народ !


1-22755
Glonia Zbanov
2002-03-27 10:44
2002.04.08
tag


1-22670
NTDim
2002-03-28 14:38
2002.04.08
Вопрос ...


1-22634
dymka
2002-03-27 14:11
2002.04.08
Про отчеты.