![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Невозможность использовать Update, если в View есть поле типа Blob [D5, IB6.x]
Malder © (2002-03-10 12:58:00)То есть, если для таблицы в которой есть Blob поле, сделать Обзор (View) в котором включить это Blob поле из таблицы, то для данного обзора нельзя будет сделать SQL комманду UPDATE. Почему ?
Я не хочу использовать большой Varchar. Неужели, никто не сталкивался с этой проблемой ? Ведь навернякак у вас в Обзоре была необходимость включать Blob поле.
Александр С.. (2002-03-15 11:57:00) [1]В принципе любой Viewможно сделать обновляемым, если создать для него триггеры.
Пробовал делать Viewпринципиально не обновляемый (из нескольких таблиц) с триггерами, и все работало прекрасно.
Может такой вариант поможет.
Slava (2002-03-15 06:46:00) [2]Создал тестовую табличку и обзор с блобом.
Сначала понаделал insert"ов в обзор, потом
update"ов (тоже в обзор) - все работает без вопросов
Malder (2002-03-14 20:53:00) [3]просто так пишу =)
Malder (2002-03-13 18:51:00) [4]ты в меня вселил надежду =)
drpass (2002-03-13 00:52:00) [5]Не надо, парень, не надо...
Завтра я утром на работе сяду и посмотрю, чего там у тебя может не работать. Только не становись еще одним пользователем СУБД от Microsoft
Malder (2002-03-13 00:11:00) [6]народ... плиз... я последний раз поднимаю топик...ну неужели вы не используете Блоб в обзорах ? не верится.. кто нибудь писал рабочие базы ? неужели вы не встречались с этой ошибкой ? ну хоть скажите, что так оно и есть, что Interbase - такая лажа.. пеерйду на MSQL я....с горя...
а-а-а.....
Malder (2002-03-12 19:57:00) [7]Scalia, не. Clients - это Обзор. А Pers - сама база =)
Scalia (2002-03-12 17:54:00) [8]>Malder © : А Pers - это таблица ! То есть UPDATE все-таки таблицы !?
ОлегЕ (2002-03-12 17:52:00) [9]Длина сегмента - это не размер поля. Здесь ты заблуждаешься, если думаешь, что только 100 байт можно хранить. На ib.demo.ru есть неплохая статья о CHAR, VARCHR и BLOB, почитай, не помешает.
Пришли на sep@ukrsib.kharkov.com свой адрес, завтра вышлю пример базы, сам попробуй.
Malder (2002-03-12 17:35:00) [10]Scalia, ну Pers - это и есть Clients
ОлегЕ, в общем все верно. Только вот я не создавал Domain Dblob.
Я использовал просто FD типа blob.
Правда не думаю, что в этом дело. А в твоем случае SIZE 100 сводит на ноль усилия. Я не знаю размер поля, даже приблизительно, поэтому и использую Блоб. А так можно и varchar использовать...
Scalia (2002-03-12 17:28:00) [11]А что есть Clients- вроде бы не имя таблицы и не имя view...???
ОлегЕ (2002-03-12 17:27:00) [12]Я делал
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
Никаких ошибок и проблем, все работает нормально.
Malder (2002-03-12 17:19:00) [13]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 15:52:00) [14]Сделал view с полем Blob, как у тебя описано.
Все обновляется, никаких ошибок. Может ты что-то не договариваешь?
Scalia (2002-03-12 15:33:00) [15]А почему надо делать UPDATE обзора, а не таблицы ?
Какой в этом глубокий смысл ?
Malder (2002-03-12 15:11:00) [16]ну ответьте кто-нибудь... Я НЕ ВЕРЮ ЧТО НИКТО НЕ ИСПОЛЬЗУЕТ BLOB В ОБЗОРАХ
Malder (2002-03-11 21:16:00) [17]Нет, параметры не работают.
Дело в том, что невозможно выполнить даже простейший SQL оператор, типа:
UPDATE Clients SET Telefon="12345" Where Fax="6789"
То есть, в запросе даже не обновляется BLOB ! Просто принципиально программа не работает, если в обзоре есть Blob поле. Я ВООБЩЕ не понимаю, зачем это... такое ограничение сводит на ноль возможность использования Blob - это поле в более менее серьезной базе не может быть использовано....... ОЧЕНЬ СТРАННО
P.S. Народ, если у вас Blob поля в обзорах (view) работают - скажите, может дело в чем-то другом...
panov (2002-03-11 18:41:00) [18]А каким образом ты UPDATE выполняешь?
Приведи код SQL.
Скорее всего, тебе нужно использовать параметризованный запрос с соответствующим типом параметра(TBlobField).
Malder (2002-03-11 17:18:00) [19]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...
roottim (2002-03-11 10:00:00) [20]возможно просто нельзя!....
это дб написано в гуиде по иб!... то что там существуют ограничения по использованию видов... это однозначно... возможно работа с блоб оно и есть!...
посмотри хелп!... по View.... наерняка что-то сказано по этому поводу!