Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Вниз

Невозможность использовать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
14-22824
Evgeny
2002-02-28 06:25
2002.04.08
Чужие окна


1-22766
Dimedrol
2002-03-27 13:55
2002.04.08
Сборщик мусора в памяти ?


1-22765
PEC
2002-03-27 13:37
2002.04.08
С Англиским Худо !


1-22664
Сатир
2002-03-28 11:34
2002.04.08
Отображение элементов списка TList


14-22798
Pete
2002-02-23 11:08
2002.04.08
DelphiX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский