Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

ЛЮДИ, помогите. Такая ошибка... я ничего не понимаю 


Malder   (2002-03-08 14:37) [0]

Постараюсь рассказать все подробно.
Есть таблица Table. Метаданные:

CREATE TABLE Table
(
MANAGER CHAR(10) CHARACTER SET WIN1251 NOT NULL,
TELEFON CHAR(16) CHARACTER SET WIN1251 NOT NULL,
FAX CHAR(16) CHARACTER SET WIN1251,
NAZVANIE CHAR(30) CHARACTER SET WIN1251,
DATEPEREZVON TIMESTAMP,
PRIMECH BLOB SUB_TYPE 0 SEGMENT SIZE 80
);


Для этой таблицы можно сделать такую SQL комманду:
UPDATE Table SET Fax="222" WHERE Telefon="111"
Соответственно, у записей у которых Telefon="111" проставиться Fax="222". Это ясно.

Существует View этой таблицы:
CREATE VIEW MANAGER (
MANAGER,
TELEFON,
FAX,
NAZVANIE,
DATEPEREZVON,
PRIMECH
) AS

Select Manager, telefon, fax, Nazvanie, Dateperezvon, Primech from Table
Where Manager = User


Если же для этой таблицы сделать:
UPDATE Manager SET Fax="222" WHERE Telefon="111"
то ошибка !

Feature is not supported
BLOB and array data types are not supported for compare operation
Statement: UPDATE Manager_view SET Fax="67" WHERE Telefon="111"


Чего там не поддерживается ? НЕ понимаю. Причем, если записи с Telefon="111" нету. то ошибки нету...
блин. Если кто-нибудь что-нибудь понял - поможите



Delirium   (2002-03-08 14:53) [1]

Попробуй исключить из view поле Primech



Johnmen   (2002-03-09 02:51) [2]

Вообще говоря, это весьма странно...

Для начала обшие советы:
1. Не употребляй для имен своих объектов (таблицы, поля, триггеры и т.д.) слова, совпадающие с используемыми в синтаксисе БД !
[..CREATE TABLE Table... не делай так !!!!!!!!]
2. Кодовую страницу для символьных полей задай при создании БД !
[...CHARACTER SET WIN1251...не делай так для каждого поля !]

P.S. Лично я никогда не задавал CHARACTER SET при создании БД,
(т.е.использовал Default) и все нормально !



Malder   (2002-03-09 13:53) [3]

Delirium, да, когда я убрал из обзора Primech все заработало. Но я не могу обойтись без этого поля. А также не могу обойтись без обзора, так как только таким способом могу обеспечить должную секретность. Как же менять тогда Primech ?

Johnmen, таблица на самом деле называется не Table, а Clients - так что здесь все ОК.
А кодовую страницу я как раз задавал при создании БД. Просто в метаданных интербэйс приписывает к каждому полю CHARACTER SET.
Только дело то не в этом...



Malder   (2002-03-09 21:51) [4]

Блин. Почему в View нельзя Blob использовать ?



drpass   (2002-03-10 01:13) [5]

Видимо, это особенность внутренней реализации Interbase - при проверке новой записи в обновляемом наборе на соответствие условиям она пытается проверить также и blob-поля - и получает облом.
Я не знаток тонкостей ее работы, но у тебя что хранится в примечании? Может, заменить его на текстовое поле, что-то вроде varchar(255)?



Ray Adams   (2002-03-10 01:57) [6]

А зачем тебе блоб??? VARCHAR до 40 килобайт кажись поддерживается в IB 6.0 Так что без блобиков можно работать. А character set никогда не используй. Проблем не оберешся




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
3-61              SergikSoft            2002-03-06 12:54  2002.04.01  
Создание клиент-сервера в


1-237             Linux                 2002-03-20 20:25  2002.04.01  
Как вставить ссылку на форму.


1-230             alexts                2002-03-20 15:21  2002.04.01  
Проблемы с MDI и DLL


1-184             Юрий Федоров          2002-03-19 18:03  2002.04.01  
Общее адресное пространство для двух процессов


1-208             anod                  2002-03-20 12:06  2002.04.01  
OpenDialog