powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перечислители (SEQUENCE) в Oracle 8i...
44 сообщений из 44, показаны все 2 страниц
Перечислители (SEQUENCE) в Oracle 8i...
    #32047692
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, помощи прошу, подскажите правильный ли у меня ход мысли?! Я создаю таблицу в Oracle, обозначаю первичный ключ, создаю перечислитель (SEQUENCE) и... дальше непонятки как работает этот перечислитель??? Я думаю, что его надо создавать один для всех первичных ключей? Или для каждой таблицы и каждого уникального ключа свой?

-- Последовательность для генерации первичных ключей
CREATE SEQUENCE s_clients
START WITH 1
INCREMENT BY 1;
-- Клиенты
CREATE TABLE t_clients
(
id NUMBER(20) NOT NULL,
olf NVARCHAR2(7) NULL, -- Орг.-пр.форма
long_title NVARCHAR2(200) NULL, -- Полное имя
short_title NVARCHAR2(70) NULL, -- Краткое имя
inn NVARCHAR2(12) NULL, -- ИНН
okpo NVARCHAR2(20) NULL, -- ОКПО
kpp NVARCHAR2(9) NULL, -- КПП
CONSTRAINT pk_clients PRIMARY KEY (id)
);

Неудобно как-то получается... а если я в Делфи захочу сделать вставку полей в dbGrid-е? Откуда "Оракул" возьмёт значение первичного ключа?! Тригер на вставку писать?Вопрос: как организовать ключи (включая и foreign key), чтоб сохранилась целостность данных? Может есть какая нибудь хитрость? Поделитесь опытом, плиз!Вообще я на Оракула с MS SQL Server пересел... может есть какой нибудь AUTOINCREMENT?! Сбросте, кому не жалко, на мыло сценарии на PL/SQL, буду очень признателен.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047695
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс! А ящик-то я свой и не указал :). Неправильно как-то :).
Ящик мой: zemal@fronda.ru или AZemlyansky@fronda.ru
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047705
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я думаю, что его надо создавать один для всех первичных ключей? Или для каждой таблицы и каждого уникального ключа свой?
Как хочешь. Оба варианта имеют право на жизнь.

>Откуда "Оракул" возьмёт значение первичного ключа?! Тригер на вставку писать?
Да или обязать это делать клиента.

>Вопрос: как организовать ключи (включая и foreign key), чтоб сохранилась целостность данных?
А в чем проблема?

>может есть какой нибудь AUTOINCREMENT?!
Нет.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047714
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит без тригера не обойтись... :( жаль, что такая морока... как-то неудобно и непривычно с "мелкософта" на серьёзные вещи переходить :). Значит будет всё писать с нуля и ручками... не хочу я с "ервин"-ом мучатся :).
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047733
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
Триггер писать прийдется, или insert ручками писать
А лучше всего найти такой компанент для Delphi DOA(Direct Oracle Access) и все твои проблемы пропадут
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047753
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знаю такое дело... вот только мне посоветовали пользоваться ODAC, а совсем не DOA :)... говорят, что ODAC круче и удобнее :). Кстати, я не понял... получается, что компонент будет сам ворочить ключами?! Это не есть хорошо!!! Я не люблю, когда клиенту так открыта БД!!! Так не должно быть!!! Это уже называется распределённая логика! Всё должно выполняться и формироваться на сервере, а не на клиенте!!! Вот от этого БД и падают, потому что клиенты пытаются одновременно одинаковые клюси в уникальное поле запихать!!! Я прихожу к мнению, что DOA мне неподходит :).
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047765
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>вот только мне посоветовали пользоваться ODAC, а совсем не DOA :)... говорят, что ODAC круче и удобнее :).
Это вопрос религии. Я использую и то и другое, в зависимости от положения звёзд :).

>Кстати, я не понял... получается, что компонент будет сам ворочить ключами?!
Нет там такого. Просто многие веши сделаны более прямо чем у ADO, BDE и др.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047781
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
ODAC или DOA, вам решать
Просто в DOA есть такое свойство у Query SequenceField в котором можно указать, что для поля ID использовать такой-то sequence. А уж если вы перепутаете sequence, так его можно и в триггере запросто перепутать. Тогда и редактировать таблицы на клиенте не хорошо, пускай этим процедуры на сервере занимаются. Все это довольно спрорные вопросы, я считаю что sequence Oracle значительно удобнее identity MS SQL, другие может быть со мной будут не согласны
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047783
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
Вернее не у Query а у TOracleDataSet
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047811
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так! Теперь понял! А что, у ODAC нет перечислений :). Я всё равно уже тригером реализовал генерацию уникального значения первичного ключа. Я думаю так будет лучше :). Вот такой получился тригер:

CREATE OR REPLACE TRIGGER c_tr_bi_clients
BEFORE INSERT ON c_t_clients
FOR EACH ROW
BEGIN
SELECT MAX(id)+1
INTO :new.id
FROM c_t_clients;
END c_tr_bi_clients;
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047815
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у ODAC поддержка перечислений.
в свойстве KeySequence для TOraQuery надо указать имя
перечисления для ключевого поля.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047819
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>CREATE OR REPLACE TRIGGER c_tr_bi_clients
>BEFORE INSERT ON c_t_clients
>FOR EACH ROW
>BEGIN
>SELECT MAX(id)+1
>INTO :new.id
>FROM c_t_clients;
>END c_tr_bi_clients;

А где тут гарантия уникальности? Только в возвращении опоздавшему с коммитом сообщения об ошибке про дупликацию первичного ключа?
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32047837
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да ладно уж... ну извратился я :)... уже исправился :). Воспользовался функцией NEXTVAL в тригере на генерацию ключа :). Спасибо всем за просвещение :). Большое спасибо!
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048023
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Alex Zemlyansky
и что триггер с SELECT MAX(id)+1 у тебя работал??? Вроде как должно было ORA-04091 вылезти...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048030
Black Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> alvako
С точки зрения 8 Оракула все нормально и все работает. Другой вопрос об эффективности...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048259
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alvako

У меня вариации с MAX работали. Ошибок TABLE IS MUTATING не было.
Я предпочитаю чуть-чуть другую конструкцию триггера на автоинкремент:

create or replace trigger my_trigger before insert on my_table for each row
begin
if :new.my_autoencriment is null then
select my_sequence.NEXTVAL from dual;
end if;
end;

Проверка на пустое значение автоинкрементального поля расширяет мои возможности. Хочу значение подставляю сам, а не хочу, пусть об этом Oracle заботится :)
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048341
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SAA_
вот тогда ты точно на проблемы с уникальностью значения в поле нарвешься :)
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048390
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неа... скорее я просто защищаюсь от собственной забывчивости. В своих программах я предпочитаю использовать ту же последовательность, ну а если забыл, то в этом мне поможет триггер.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048471
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из-за аналогичной идеи "защищаться от собственной забывчивости" (использовали аналогичный подход на триггере) мы недавно поплатились данными. Дело в том, что продвинутые и ленивые пользователи нашли в Forms (6i) такую дивную функцию - Дублировать запись. А прикол в том, что эта функция дублирует данный блок полностью в том числе и поля с ключами. В итоге получились записи с дублирующимися ключами. Так что если вы имеете дело с формс и поле у Вас не primary key, лучше убрать проверку на null.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048600
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню немного за месье SAA_, так как знаю специфику его приложений :)

Так вот, в этих приложениях последовательности используются только на полях, которые являются primary key. А пользователь в формах этот ID даже не видит.

Плюс триггеры получаются универсальные на before insert on update:
Код: plaintext
1.
2.
3.
4.
5.
...
if :new.pk_row is null then 
:pk_row:= tabX_pk_seq.NEXTVAL; 
end if; 
:new.change_time:=sysdate;
:new.user_id:=...


2SAA_
А почему при аналогичном триггере, но вместо MAX(amt) стояло SUM(amt) вылезал TABLE IS MUTATING TABLE ???
Или я чего-то про то, как работает MAX не понимаю?
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048632
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я упомянул, что этот косячек вылезет если это поле не primary key. А насчет того, что "это поле пользователи даже не видят" так в этом как раз таки и загвоздка, что пользователи этого поля не видят, но оно все равно дублируется (т.к. оно есть в блоке данных). А в блоке данных оно должно быть, чтобы Вы могли ему присвоить вручную ключ.

А насчет универсальности триггера - в данном случае он также универсален:
Код: plaintext
1.
2.
3.
4.
5.
6.
...
if inserting then 
:pk_row:= tabX_pk_seq.NEXTVAL; 
end if; 
:new.change_time:=sysdate;
:new.user_id:=...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32048633
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я упомянул, что этот косячек вылезет если это поле не primary key. А насчет того, что "это поле пользователи даже не видят" так в этом как раз таки и загвоздка, что пользователи этого поля не видят, но оно все равно дублируется (т.к. оно есть в блоке данных). А в блоке данных оно должно быть, чтобы Вы могли ему присвоить вручную ключ.

А насчет универсальности триггера - в данном случае он также универсален:
Код: plaintext
1.
2.
3.
4.
5.
6.
...
if inserting then 
:pk_row:= tabX_pk_seq.NEXTVAL; 
end if; 
:new.change_time:=sysdate;
:new.user_id:=...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049232
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ljublju kogda umnie ljudi kritikujut metodi... no esli uchest escho odnu specifiku moih prilozenij na Developer 6i, to ja bi skazal tak: Est u nas odin proizvditel softa blagodarja kotoromu ja nauchilsja delat sledujuschie triggeri na forme s prostenkim tekstom NULL; Narpimer triggeri KEY-CLRBLK, KEY-DELREC, KEY-DUPREC chto privodit k odnoznachnomu ignoru vot etih zabavnih kombinacij Ctrl+F4, Shift-F6 i prochee.

A est escho odin prikol u moego ljubimogo proizvoditelja... nazimaesh elementarnuju F7 (ENTER_QUERY) i gljadish kak s kazdim F7 u tebja SEQUENCE rastet na edenichku. Ili skazem nazimaesh strelku vniz v forme gde principialno na bloke dolzen bit trigger WHEN-NEW-RECORD-INSTANCE s tekstom FIRST_RECORD; i zabavljaeshsja tem, kak medljeno krushitsja idealogija softa (to vSkv call 2 me by phone) o kotoroj mne vtirali polchasa :)
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049428
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот такой триггер без SEQUENCE обеспечит уникальность?:

create or replace trigger proba before insert on proba
for each row
begin
lock table proba in exclusive mode;
select decode(max(n1),null,0,max(n1))+1 into :new.n1 from proba;
end;
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049436
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А вот такой триггер без SEQUENCE обеспечит
>уникальность?:
>
>create or replace trigger proba before insert on proba
>for each row
>begin
>lock table proba in exclusive mode;
>select decode(max(n1),null,0,max(n1))+1 into :new.n1 from
>proba;
>end;

Вывалится в ошибку ORA-04091 про мутирующую таблицу.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049480
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда почему у меня (Oracle9i (9.2) под Win2k) не вываливается? Единственно, нужно после insert ... выдавать commit, иначе другие сессии отдыхают (если из SQL Plus, например).
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049483
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Тогда почему у меня (Oracle9i (9.2) под Win2k) не
>вываливается? Единственно, нужно после insert ...
>выдавать commit, иначе другие сессии отдыхают (если из
>SQL Plus, например).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
   1   create or replace trigger proba before insert on laud
   2   for each row
   3   begin
   4   lock table laud in exclusive mode;
   5    --select decode(max(n1),null,0,max(n1))+1 into :new.n1 from proba;
 
   6 * end;
SQL> /

Trigger wurde erstellt.

SQL> insert into laud select * from dual;
insert into laud select * from dual
            *
FEHLER in Zeile  1 :
ORA- 04091 : table TEST.LAUD is mutating, trigger/function may not see it
ORA- 06512 : at  "TEST.PROBA" , line  2 
ORA- 04088 : error during execution of trigger 'TEST.PROBA'


Это раз, а во-вторых в теле тригера нельзя делать коммит или роллбек. У меня, конечно, 8.1.7, но не думаю что это все так поменялось в 9-ке.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049516
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не говорит, что в теле триггера можно использовать commit или rollback. Но в 9.2 этот триггер работает !!!
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049525
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, в Oracle8 (8.0.5) тоже работает.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049538
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Кстати, в Oracle8 (8.0.5) тоже работает.

2Noname
Приведите, пожалуйста, свой листинг. Я проверял на 8.0.5, 8.1.5 и 8.1.7 и везде одинаковый результат.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049557
Lazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже решил посмотреть :-)
8.0.5 Linux
insert into laud select * from dual
ORA-04091: table LAUD is mutating, trigger/function may not see it
Наверное Noname пошутил.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049586
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ей богу не шучу. Oracle 8.0.5 на WinNT 4 sp6. Привожу полный вывод SQL Plus (без всяких монтажей):


SQL*Plus: Release 8.0.5.0.0 - Production on Wed Sep 11 9:6:17 2002

(c) Copyright 1998 Oracle Corporation. All rights reserved.


Connected to:
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production

SQL> show user
USER is "SCOTT"
SQL> create table proba(
2 n1 number,
3 c1 varchar2(20));

Table created.

SQL> create or replace trigger proba before insert on proba
2 for each row
3 begin
4 lock table proba in exclusive mode;
5 select decode(max(n1),null,0,max(n1))+1 into :new.n1 from proba;
6 end;
7 /

Trigger created.

SQL> insert into proba(c1) values('qqq');

1 row created.

SQL> select * from proba;

N1 C1
--------- --------------------
1 qqq

SQL>
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049627
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня тоже работает на 8.1.7 (Linux)
Но это же не универсальный тригер, он не будет работать в запросе
insert into mytable (поля_кроме_ID) (select поля from othertable)
Так что без sequence необойтись
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049644
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не будет. Но если не использовать вставки типа insert into table_name(...) select ..., то он имеет право на существование.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049651
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в таком случае почти любой тригер имеет право на существование
я, например, использую тригер который ищет дыры в таблице и заполняю их, он тоже обеспечивает уникальность и тоже не работет с insert into ... select ...
все это частные случаи...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049684
Noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А никто на общий случай не претендовал... Это один из способов обеспечения уникальности ключа в многопользовательской среде без использования SEQUENCE с известными ограничениями. Здесь тоже можно сделать поиск пробелов в ключе и прочие навороты.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049703
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если задаться целью избавиться от sequence, то можно еще проще
create or replace trigger my_trigger before insert on my_table for each row
begin
:new.id:=sys_guid;
end;
этод тригер удовлетворит и insert ... select ...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049707
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или вообще отказаться от id и от тригеров в пользу использования ROWID, будет всего-то одно ограничение...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049727
Lazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Noname
>Ей богу не шучу.
твой пример и у меня проходит,а ты попробуй
insert into laud select * from dual;
:-)
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32049873
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select decode(max(n1),null,0,max(n1))+1 into :new.n1 from proba

Takoj sposob ne spravedliv dlja mnogopolzovatelskogo dostupa. Esli v tablicu dobavljajut 2, a to i bolee sessij odnovremenno? To kakov budet rezultat? Pobedit tot kto pervim skazet commit, a svalitsja tot, kto opazdal.
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32069912
Denis_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, помогите плиз. Есть последовательность sequence, как результат этой последовательности занести в конкретный столбец. Т.к. пока мой триггер не работает:

Create Trigger Dollar
Before Insert On Валюта
For Each Row
Begin
Select posledovat.Nextval INTO :new.ID_валюты
From Валюта;
END Dollar;
/
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32070002
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заметил одну тенденцию этого форума: самые простые, пустяковые вопросы собирает больше всего постов. Касается этого треда и например "Работа с файлами..."

Стыдно...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32070964
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В защиту
create or replace trigger my_trigger before insert on my_table for each row
begin
if :new.my_autoencriment is null then
select my_sequence.NEXTVAL from dual;
end if;
end;

Случай для PK
Иногда может возникнуть необходимость заполнения нескольких таблиц, связанных ключами, с помощью 1 скрипта/процедуры PL\SQL. Для того, чтобы связать дочерние и родительские записи, надо знать PK родителя. Если же в этом триггере убрать проверку на IS NULL, поле PK родителя будет изменено при вставке, и ничего не будет работать...
...
Рейтинг: 0 / 0
Перечислители (SEQUENCE) в Oracle 8i...
    #32071828
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: Denis_M
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Народ, помогите плиз. Есть последовательность sequence, как результат этой последовательности занести в конкретный столбец. Т.к. пока мой триггер не работает: 

Create Trigger Dollar 
Before Insert On Валюта 
For Each Row 
Begin 
Select posledovat.Nextval INTO :new.ID_валюты 
From Валюта; 
END Dollar; 
/


Выделена болдом ваша проблема. Используйте следующую конструкцию:
Select posledovat.Nextval INTO :new.ID_валюты
From Dual ;
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перечислители (SEQUENCE) в Oracle 8i...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]