powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / SA11 и SA12 - баг сервера, или я что то не понимаю?
7 сообщений из 7, страница 1 из 1
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36849905
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Сервер Sybase ASA.
В общем виде выполняется такая констукция:
создана глобальная временная таблица NOT TRANSACTIONAL
Код: plaintext
1.
2.
3.
4.
5.
CREATE GLOBAL TEMPORARY TABLE "DBA"."test_insert" (
	"ID" INTEGER NOT NULL,
	"name" VARCHAR( 30 ) NULL,
	PRIMARY KEY ( "ID" ASC )
) NOT TRANSACTIONAL;

и есть такая процедура

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE PROCEDURE dba.test_table_insert()
BEGIN

    DECLARE @n int;
    DELETE  test_insert;

    SET @n= 1 ;
   	WHILE @n <=  1500000  LOOP
         Insert into test_insert(id,name)
         SELECT @n,cast(@n as varchar( 30 )) as nn ;
         SET @n =@n+ 1 ;
    END LOOP;

END


Так вот... если выполняю данную процедуру НЕСКОЛЬКО раз подряд на SA10 (10.0.1.4075), то все нормально.
Если пытаюсь выполнить на SA11 (11.0.1.2472) или на SA12 (12.0.0.2566), то на второй или третий раз - ругается: "не уникален первичный ключ". Получается что, не отрабатывает команда DELETE test_insert
Я что то не так понимаю в работе глобальных временных таблиц или это баг сервера?


С Уважением Вадим.
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36868367
Рекомендация сменить ключ на неуникальный индекс.

Временные таблицы видят данные только текущего коннекта, поэтому delete из другого
коннекта не удалит данных, введенных в первом.

Видимо в разных версиях по-разному выполняется проверка уникальности ключа - в рамках одного коннекта или для всех.

У них так часто - типа исправили потому что "так оно и должно быть" а старые приложения перестают работать.
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36869271
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VolokolaЯ что то не так понимаю в работе глобальных временных таблиц или это баг сервера?
Баг сервера. Только где - это нужно определять. Вставьте после DELETE оператор SELECT чтобы убедиться, что записи удаляются, а перед INSERT вставьте MESSAGE @n TO CLIENT чтобы увидеть на каком номере дает ошибку.
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36875323
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только что проверил - это бага сервера.

на 2452 - все ок
на 2467 - ошибка появилась.

Нюансы:
1. create Global temporary table ... not transactions; - ошибка с дублированием записей присутствует.
1. create Global temporary table ... on commit preserverows; - ошибка с дублированием записей отсутствует.
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36876130
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.

ASCRUSВставьте после DELETE оператор SELECT чтобы убедиться, что записи удаляются
Проверил, записи удаляются почему то не все.

аASCRUSа перед INSERT вставьте MESSAGE @n TO CLIENT чтобы увидеть на каком номере дает ошибку.

каждый раз на разном.

v_smirnovНюансы:
1. create Global temporary table ... not transactions; - ошибка с дублированием записей присутствует.
1. create Global temporary table ... on commit preserverows; - ошибка с дублированием записей отсутствует.
Есть такое. Но в данном случае необходимо - not transactions.
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36878007
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы вместо delete не использовать truncate table?
...
Рейтинг: 0 / 0
SA11 и SA12 - баг сервера, или я что то не понимаю?
    #36879588
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МарсельПочему бы вместо delete не использовать truncate table?

truncate table - неявно вызывает окончание транзакции.
В данном случае приведен упрощенный (схематический) кусок процедуры, которая выполняется в составе одной транзакции, начало и окончание которой вызывается в других процедурах.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / SA11 и SA12 - баг сервера, или я что то не понимаю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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