Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА:

Re: Oracle: Как вытащить Identity 12 года 8 мес. назад #2957

  • Gwen
  • Gwen аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 5
  • Спасибо получено: 0
У тебя есть первичный ключ в таблице, он состоит из поля с типом identity? Может быть тебе стоит сделат ьследующее: на каждую требуемую таблицу создать триггер, определять в нем значение первичного ключа, а с клиента после insert'а спрашивать текущее значение sequence:
insert into test (name) values ('name2');

select sq_test.currval into :identity from dual;

подразумевая, что сработал триггер, в котором дернулся sequence. Учти, что currval ты имеешь право спрашивать тогда, когда хотя бы раз перед ним в сессии прошел nextval. В данном случае это произошло в триггере.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как вытащить Identity 12 года 8 мес. назад #2958

  • Doc
  • Doc аватар
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 0
А почему бы взамен MSSQL-ой колонки identity не завести колонку с одинаковым для всех таблиц именем ( "ID" конечно же :-))) ) ? По большему счету и сиквенс может быть один на все таблицы. И получите то что хотите (насколько я понял) - унифицированный вид инсерта на любую таблицу с получением ключа.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как вытащить Identity 12 года 8 мес. назад #2959

только, чтоб уж совсем красиво
>before insert or update on test
before insert or update of test_id on test

Замечательно !!! :((((
Только вопросец зачем update - первичный ключ ???

Если уж совсем грамотно и красиво ...
то на мой скромный взгляд надо так
before insert on test
- и без указания полей так как первичный ключ обычно not null ...
т.е вставлять его надо в любом случаи ....

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как вытащить Identity 12 года 8 мес. назад #2960

  • Myk
  • Myk аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 2
  • Спасибо получено: 0
Gwen, Первичный ключ может состоять из нескольких полей

Doc
Исторически сложилось так что эти поля имеют свои названия, и куча кода их пользует... это было до меня и я ничего здесь исправить не могу...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как вытащить Identity 12 года 8 мес. назад #2961

  • Gwen
  • Gwen аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 5
  • Спасибо получено: 0
"Замечательно !!! :((((
Только вопросец зачем update - первичный ключ ???"

А почему СТРОГО ЗАПРЕЩАЕТСЯ делать
update tablename set test_id = null, ... where ... ?
Насчет грамотности - представьте себя на месте кодера, правящего давно напИсанное монстроидальное приложение и встретившего такой апдейт. Кричать что ЭТО не правильно и пытаться переделать кучу кода (со вносом свеженьких багов, конечно же) или убедиться в наличии корректного триггера ? Как грамотнее

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как вытащить Identity 12 года 7 мес. назад #3045

прежде чем вытаскивать Identity потребуется адаптировать SQL, а потом уже и можешь вытаскивать Identity

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.216 секунд