Универсальная генерация целочисленых ID

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Вариант который также приходил в голову. В MS SQL использовать identity колонку, а в Оракле сделать вставку ID из сиквенса, но нужно потом одним запросом получить @@Identity или текущее значение сиквенса... с этим проблемка...
Может у кого-то уже есть решение этой проблемы и он согласен поделиться этим решением?
Как-то я пропустил эту реплику...
Ну так надо все-таки чтобы приложение как-то определяло, с каким сервером оно работает (тем более, что выбор не большой - один из двух).
Многие инструменты разработчика для работы с БД позволяют выполнять макроподстановки в текст запроса.
Использовать в тексте запроса %KeyValue%, а перед выполнением заменять его на "Sequence1.NextValue", например, если в данный момент работа ведется с ораклом....
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

просто мах+1....работает давно и в промышленных объёмах
Слабо верится. При интенсивном использовании таблицы просто случаются всякого рода неприятности. 20-30 операторов, колбасящих одновременно накладные и пары-тройки манагеров с бухгалтерами, запускающих отчёты по этой же таблице хватает на то, чтобы при сдаче квартальных и тем более годовых отчётов сделать систему неработоспособной.
З.Ы: а вообще топику год скоро будет :)
Даже самый дурацкий замысел можно воплотить мастерски
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Уже год? Надеюсь, этот проект так и не увидел свет.

Как говорил Том Кайт "невозможно сделать СУБД - независимое приложение которое, по крайней мере, модифицирует данные".
Секвенсы Оракла в сто раз быстрее и надежнее людой самопальной лабуды. В других базах данных аналогичная ситуация.
Если надо опеспечить независимость от СУБД надо сделать Data Abstraction Layer, воспользовавшись соответствующим Design Pattern. Pattern этот хорошо описан.
http://java.sun.com/blueprints/corej2ee ... bject.html
У нас, чтобы опеспечить работу нашего текущего проекта с другой СУБД, надо просто написать другой DAO Driver, реализовав соответсвующие интерфейсы.
2B OR NOT(2B) = FF
Ответить