Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

эмуляция поля autoinc   Найти похожие ветки 

 
mixam ©   (2004-06-01 09:17) [0]

в парадоксе есть тип поля autoInc - вот меня он не устраивает т.к. нарашивает значение после post, а мне надо знать значение во время insert


 
DenK_vrtz ©   (2004-06-01 09:23) [1]

Варианты:
1.Если система однопользовательская - то перед insert - select max(id)...
2.Отдельная таблица-счетчик


 
Alexandr   (2004-06-01 09:29) [2]

стыдно в 21веке начинать писать базы банных на парадоксе.


 
mixam ©   (2004-06-01 09:31) [3]

Да мысль, а пример виртуального (кодом) создания запроса с полем id можешь дать. Буду благодарен.


 
DenK_vrtz ©   (2004-06-01 09:38) [4]

>Alexandr   (01.06.04 09:29) [2]

ничего постыдного в этом не вижу! Все с чего-то начинали.

>mixam ©   (01.06.04 09:31) [3]

я ж написал запрос :) Но автоинкрементное поле, я считаю, надежнее.


 
Anatoly Podgoretsky ©   (2004-06-01 09:51) [5]

Если не устраивает авто, то номера присваивай сам, можно получать последний номер как указано  [1] правильно работает только в случае работы одного экземпляра программы.
Нужен ли именно номер? Что он за собой несет?


 
Sandman25 ©   (2004-06-01 10:00) [6]

Если есть естественный ключ (уникальное поле или совокупность полей), то можно узнавать id вставленной записи сразу после insert с помощью select id from mytable where my_unique_field = "my_value"


 
Anatoly Podgoretsky ©   (2004-06-01 10:06) [7]

Если есть естественный ключ то искуственный может быть и не к чему, разве что для экономии места или стабизации записи.


 
Sandman25 ©   (2004-06-01 10:07) [8]

[7] Anatoly Podgoretsky ©   (01.06.04 10:06)

Естественный ключ может быть изменяемым (фискальный код или номер паспорта, например). Тогда будут проблемы при update связанных таблиц.


 
Alexandr   (2004-06-01 10:15) [9]


> DenK_vrtz ©   (01.06.04 09:38) [4]
> >Alexandr   (01.06.04 09:29) [2]
>
> ничего постыдного в этом не вижу! Все с чего-то начинали.


я еще с ДВК начинал. Что это меняет?
Сейчас НЕТ НИКАКОГО СМЫСЛА что-то писать на парадоксе.
Мало того, что это глючно, так еще и очень тяжело. Вон чувак уже с первой проблемой столкнулся.
Эти все проблемы уже давно решены в нормальных СУБД, мало того, с ними  работать проще, ресурсов сравнительно одинакого, если еще не меньше. Назовите хоть один аргумент в пользу парадокса по сравнению с клиент-серверными СУБД.


 
-=alive=-   (2004-06-01 10:23) [10]

Есть аргумент, переносимость на другие машины.


 
Alexandr   (2004-06-01 10:24) [11]

А что, другие перенести нельзя?
Или Yaffil Personal или Firebird Embedded сложно переносить?
Да гораздо проще.


 
DenK_vrtz ©   (2004-06-01 10:25) [12]

>Alexandr   (01.06.04 10:15) [9]
>я еще с ДВК начинал

разговор про СУБД, а не про тип ПК

>Назовите хоть один аргумент в пользу парадокса по сравнению с клиент-серверными СУБД

обсуждать данный вопрос в рамках данного топика не имеет никакого смысла

А у вас, я замечу, тоже не всегда все гладко, так что давайте не будем


 
Alexandr   (2004-06-01 10:28) [13]


>
> А у вас, я замечу, тоже не всегда все гладко, так что давайте
> не будем


да, давайте не будем про то, у кого где гладко.
И обсуждать вопрос про выбор СУБД не будем.
пусть учатся на своих ошибках.


 
app ©   (2004-06-01 10:29) [14]

если есть желание повоевать то заведите тему: что то против чего то.


 
Alexandr   (2004-06-01 10:31) [15]

не... упаси бог воевать. Ради чего?


 
mixam ©   (2004-06-01 10:37) [16]

вы бы хоть назвали то, на что присели .
я про субд.


 
Anatoly Podgoretsky ©   (2004-06-01 10:47) [17]

Спектр используемых баз очень широк.


 
bushmen ©   (2004-06-01 11:06) [18]

>я про субд

Круг довольно обширен - от Firebird, MSSQL Server, DB2, Sybase до Oracle. Это наиболее распространенные. Есть и другие.


 
bn2   (2004-06-01 18:35) [19]

Самый правильный способ - это использовать вспомогательную таблицу, где будут хранится текущие значения счётчиков для разных таблиц. Способ этот применяется в большинстве СУБД, только выглядит он как тригер+секвенс (Оракл, Интербейз). Случаев, когда нужно при добавлении знать будущий ключ записи - больше чем достаточно при более-менее серьёзной задаче.

ЗЫ. Даже сейчас есть большой смысл применять Парадок. Первый из них - переносимость приложения, особенно есть используется не БДЕ, а визуальные компоненты, напрямую работающие с базой.


 
vlad-mal   (2004-06-01 19:18) [20]

Даже сейчас есть большой смысл применять Парадок. Первый из них - переносимость приложения, особенно есть используется не БДЕ, а визуальные компоненты, напрямую работающие с базой.

Назови хотя бы один способ, кроме BDE, в которм поддерживаются все типы данных при чтении и можно не только читать, но и писать.

Нет таких! Если только сам Paradox... (но и он, кажется, BDE юзает?)


 
bn2   (2004-06-02 09:50) [21]

Барт Симпсон написал: "I will use Google before asking dumb questions". Например, на torry.ru куча ответов...
Насчёт "всех типов данных" - совершества нет. Всегда есть условия, которые надо учитывать. И всегда есть выбор между н-мегабайт БДЕ и отсуствием "супер-пупер типа данных".

ЗЫ. В MySQL вообще много чего нет (проще перечислить, что есть) - а куча народу использует. В Парадоксе хоть форинг-кей есть....


 
asp ©   (2004-06-02 11:23) [22]

В DB2 есть такой механизм.
Заводим уникальное поле как CHARACTER(13) FOR BIT DATA
И пользуемся функцией GENERATE_UNIQUE(), которая всегда возвращает уникальное значение.

В приложение кладем qrUnique: TQuery
SELECT NUM.NUM
FROM (VALUES(GENERATE_UNIQUE())) AS NUM(NUM)

Оформляем:
function Tdm.GenerateUnique: Variant;
begin
 Self.qrUnique.Open;
 Result:= Self.qrUniqueNUM.Value;
 Self.qrUnique.Close
end;

И на нужном DataSet"е пишем:
procedure TForm1.Query1NewRecord(DataSet: TDataSet);
begin
 DataSet.FieldByName("ID").AsVariant:= dm.GenerateUnique
end

Минусы только в отсутствии привычного INTEGER и немного большим размером поля.



Страницы: 1 вся ветка

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

Наверх





Память: 0.5 MB
Время: 0.037 c
11-1075928030
Sniper
2004-02-04 23:53
2004.06.27
альтернатива RichEdit1.SelAttributes.Color := clRed; в KOL?


3-1086260051
Jaxtor
2004-06-03 14:54
2004.06.27
Типы полей набора данных из хранимой процедуры


4-1084621326
Sanek_metaller
2004-05-15 15:42
2004.06.27
Как скопировать файл из "Temporary Internet Files"?


1-1087279731
Olsher
2004-06-15 10:08
2004.06.27
Как выяснить, работает ли программа или уже завершилась?


1-1086876686
Asdor
2004-06-10 18:11
2004.06.27
Конструктор формы и Reintroduce





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский