powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Где ошибка???
6 сообщений из 6, страница 1 из 1
Где ошибка???
    #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
Где ошибка???
    #32049432
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие в оракле ограничения на user defined function помнишь? Кажется не могут использоваться в определении таблиц.
...
Рейтинг: 0 / 0
Где ошибка???
    #32049435
Alex Zemlyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Млять их так эти ограничения!!! Что за корявость у Оракула такая!!! Вроде бы объектно ориентированный, но... не совсем. Вроде бы свободу даёт... и тут же лишает. Как тогда такой вопрос со значением поля по умолчанию решить без использования тригера и без лишней суеты??? Есть у кого наработки в этом плане?
...
Рейтинг: 0 / 0
Где ошибка???
    #32049440
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем триггер не устраивает?
...
Рейтинг: 0 / 0
Где ошибка???
    #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
Где ошибка???
    #32049471
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ну уже вижу, что придётся всякими обходными
>моневрами множить объекты БД до того, пока в них
>путаться не начнёшь... короче, в Оракле, тоже не сахер
>работать (я с MS SQL пересаживаюсь на Ораклу)...
>корявости в Оракле хватает... с первого взгляда уже
>вижу... в общем не дуду париться и сделаю так

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


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