Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизНесколько вопросов о SQL Найти похожие ветки
← →
_toltec (2003-04-20 20:09) [0]1. Как узнать используется кем-нибуть таблица?
2. Есть таблица
Create table Tab1
(
f1 varchar(10),
f2 integer
)
вней есть две одинаковые стоки.
как с помощью delete from удалить одну из них?
3. Почему при использование Upper в параметре которого строка
из русских букв он непереводит ее в верхний регистр?
← →
Rad (2003-04-20 20:51) [1]1. В каком смысле?
Но, вообще, никак - нет в FB блокировки на уровне таблицы
2.rdb$db_key
(см http://www.ibase.ru/devinfo/deldupes.htm)
3. Стандартная Upper не поддерживает неанглийские кодировки. Надо использовать UDF (например, RFunc - http://www.ibase.ru/d_udf.htm)
← →
Rad (2003-04-20 20:54) [2]Стандартная Upper не поддерживает неанглийские кодировки. Надо использовать UDF
Ну или делать базу, как написано тут: http://www.ibase.ru/devinfo/ibrusfaq.htm
← →
Zacho (2003-04-21 08:23) [3]
> Rad © (20.04.03 20:51)
> 1. В каком смысле?
> Но, вообще, никак - нет в FB блокировки на уровне таблицы
Неверно, есть. Смототри SNAPSHOT TABLE STABILITY (consistency)
Подробно читать в Language Reference и http://www.ibase.ru/devinfo/ibtrans.htm
← →
Rad (2003-04-21 08:43) [4]>> Но, вообще, никак - нет в FB блокировки на уровне таблицы
> Неверно, есть.
Вай-вай, че-то я совсем уже плохой стал.
Да, конечно, есть.
Но узнать, кем она используется все равно нельзя. Да и узнать, что вообще используется - обычно тоже (кроме, разумеется случая сSNAPSHOT TABLE STABILITY
)
← →
Johnmen (2003-04-21 09:46) [5]>Zacho © (21.04.03 08:23)
>Rad © (21.04.03 08:43)
>Вай-вай, че-то я совсем уже плохой стал.
>Да, конечно, есть.
Блокировок нет вообще никаких !
Есть только некие способы имитировать их для постороннего наблюдателя...:)
← →
Соловьев (2003-04-21 11:41) [6]
> 3. Стандартная Upper не поддерживает неанглийские кодировки.
> Надо использовать UDF
а как жеupper(field collate PXW_CYRL)
← →
NickBat (2003-04-21 11:44) [7]Удалить дублирующиеся записи можно и так:
delete from test
where f1 in
(select f1
from test
group by f1
having count(f1)>1)
Проверено на Firebird диалект 1.
← →
Zacho (2003-04-21 11:52) [8]
> NickBat © (21.04.03 11:44)
Так удалятся все повторяющиеся записи (точнее даже все записи с повторяющимся значением f1). А человеку нужно, чтобы удалились только дубликаты, т.е. чтобы по одной записи осталось.
А вообще нефиг делать таблицы без первичного ключа.
← →
NickBat (2003-04-21 12:58) [9]> Zacho © (21.04.03 11:52)
Так удалятся записи у которых дублируется поле f1, при этом по одной записи останется. Можешь проверить.
← →
Zacho (2003-04-21 13:18) [10]
> NickBat © (21.04.03 12:58)
Сейчас проверил на YA 854. Вообще какая-то фигня получается.
Итак: CREATE TABLE TEST (F1 INTEGER)
Заполняем: 1,1,3,4,4,2,2
Выполняем запрос NickBat © (21.04.03 11:44)
Получаем: 1,1
Выполняем второй раз, остается одна запись со значением 1
Ужас какой-то. Баг (или фича) в этой сборке YA ??
И все равно я уверен, что должен быть ПК и проблем таких не будет.
← →
Соловьев (2003-04-21 13:20) [11]согласен с PK. его то и делать всего-то ничего...
← →
Johnmen (2003-04-21 13:41) [12]WI-V6.2.908 Firebird 1.0
Указанный запрос срабатывает, как ожидается. Что и понятно, т.к. логика работы сервера предполагает выполнение подзапроса на каждую анализируемую для удаления запись. Но ! На данное поведение оптимизатора сервера - его личное дело. И нет гарантий, что в другой сервер сначала выполнит селект, а потом делете. А в этом случае данный запрос некорректен.
← →
Zacho (2003-04-21 13:44) [13]
> Johnmen © (21.04.03 13:41)
Согласен. Но меня сильно удивило, что Дятел 1.1.854 удалил единственную запись с F1=3
← →
NickBat (2003-04-21 13:49) [14]> Johnmen © (21.04.03 13:41)
А я и написал Firebird. :))
А вообще-то до такой ситуации (дублирование записей) лучше не доходить.
← →
Johnmen (2003-04-21 14:02) [15]>Zacho © (21.04.03 13:44)
Мне это тоже крайне удивительно...Т.к. логика не прослеживается...:)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c