Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Где ошибка??? / 6 сообщений из 6, страница 1 из 1
10.09.2002, 16:24
    #32049429
Alex Zemlyansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
Вот код сценария:
CREATE OR REPLACE FUNCTION GenUID
RETURN VARCHAR2 IS
p_UID VARCHAR2(20);
BEGIN
p_UID := TO_CHAR(SYSDATE,'YYMMDDHH24MISS')
|| SUBSTR(DBMS_UTILITY.GET_TIME,-2)
|| SUBSTR(USER,1,6);
RETURN p_UID;
END GenUID;
/
CREATE TABLE c_t_NatalyBuy
(
id VARCHAR2(20) NOT NULL DEFAULT GenUID,
numb_doc VARCHAR2(10) NULL,
data_doc DATE NULL,
data_payment DATE NULL,
data_shipment DATE NULL
);
Почему таблица не хочет создаваться? Почему id поле не может быть приравнено по умолчанию значению функции??? Ведь код
"id VARCHAR2(20) NOT NULL DEFAULT sysdate"
проходит без эксцесов. Нифига я не понимаю почему так нельзя?
...
Рейтинг: 0 / 0
10.09.2002, 16:29
    #32049432
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
А какие в оракле ограничения на user defined function помнишь? Кажется не могут использоваться в определении таблиц.
...
Рейтинг: 0 / 0
10.09.2002, 16:39
    #32049435
Alex Zemlyansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
Млять их так эти ограничения!!! Что за корявость у Оракула такая!!! Вроде бы объектно ориентированный, но... не совсем. Вроде бы свободу даёт... и тут же лишает. Как тогда такой вопрос со значением поля по умолчанию решить без использования тригера и без лишней суеты??? Есть у кого наработки в этом плане?
...
Рейтинг: 0 / 0
10.09.2002, 16:43
    #32049440
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
А чем триггер не устраивает?
...
Рейтинг: 0 / 0
10.09.2002, 17:05
    #32049456
Alex Zemlyansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
Ну уже вижу, что придётся всякими обходными моневрами множить объекты БД до того, пока в них путаться не начнёшь... короче, в Оракле, тоже не сахер работать (я с MS SQL пересаживаюсь на Ораклу)... корявости в Оракле хватает... с первого взгляда уже вижу... в общем не дуду париться и сделаю так:

CREATE OR REPLACE FUNCTION GenUID
RETURN VARCHAR2 IS
BEGIN
RETURN TO_CHAR(SYSDATE,'YYMMDDHH24MISS')
|| SUBSTR(DBMS_UTILITY.GET_TIME,-2)
||SUBSTR(USER,1,6);
END GenUID;
/

CREATE TABLE c_t_NatalyBuy
(
id VARCHAR2(20) NOT NULL,
id_clients VARCHAR2(20) NOT NULL,
id_saloons NUMBER(4) NOT NULL,
numb_doc VARCHAR2(10) NULL,
data_doc DATE NULL,
data_payment DATE NULL,
data_shipment DATE NULL,
CONSTRAINT c_pk_clients PRIMARY KEY (id)
);

CREATE OR REPLACE TRIGGER c_tr_bi_NatalyBuy
BEFORE INSERT ON c_t_NatalyBuy
FOR EACH ROW
BEGIN
IF :new.id IS NULL THEN :new.id := GenUID;
END IF;
END c_tr_bi_NatalyBuy;
/

Лучше уже не сделать... не удобно всё это... не люблю я такую суету с размножением объектов в БД, но делать нечего... приходиться мириться :(.
...
Рейтинг: 0 / 0
10.09.2002, 17:19
    #32049471
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка???
>Ну уже вижу, что придётся всякими обходными
>моневрами множить объекты БД до того, пока в них
>путаться не начнёшь... короче, в Оракле, тоже не сахер
>работать (я с MS SQL пересаживаюсь на Ораклу)...
>корявости в Оракле хватает... с первого взгляда уже
>вижу... в общем не дуду париться и сделаю так

Дело в том, что одноразовое создание дополнительных объектов, как-то триггеры и пр. не стоят для базы данных практически ничего, а вот кажущееся "удобство" microsoft зачастую совсем не бесплатно, а иногда просто скрытое от пользователя (разработчика) то же самое "размножение" от которого ты не можешь отказаться даже если тебе эта функциональность не нужна. Поэтому не стоит тут хаять Оракл. Причем на мой взгляд (не для флейма о том что лучше) основным его преимуществом перед другими бд является engine, а в во всяких облегчающих жизнь разработчика (но не конечного пользователя) примочках майкрософт конечно " впереди планеты всей".
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Где ошибка??? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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