Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.08;
Скачать: CL | DM;

Вниз

Несколько вопросов о 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
4-23429
Colt
2003-02-25 09:14
2003.05.08
Вывод текста на экран поверх всего.


3-23007
Сизых Михаил
2003-04-17 20:11
2003.05.08
Маска ввода для компонента TDBEdit


14-23398
Supreme 2
2003-04-21 19:31
2003.05.08
Как убрать


14-23378
mixamixa
2003-04-20 20:25
2003.05.08
Где взять стаднартные иконки (копировать, принет)?


6-23266
Darkman
2003-03-13 16:22
2003.05.08
Написание программы удаленного администрирования