|
Где ошибка???
|
|||
---|---|---|---|
#18+
Вот код сценария: 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" проходит без эксцесов. Нифига я не понимаю почему так нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 16:24 |
|
Где ошибка???
|
|||
---|---|---|---|
#18+
А какие в оракле ограничения на user defined function помнишь? Кажется не могут использоваться в определении таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 16:29 |
|
Где ошибка???
|
|||
---|---|---|---|
#18+
Млять их так эти ограничения!!! Что за корявость у Оракула такая!!! Вроде бы объектно ориентированный, но... не совсем. Вроде бы свободу даёт... и тут же лишает. Как тогда такой вопрос со значением поля по умолчанию решить без использования тригера и без лишней суеты??? Есть у кого наработки в этом плане? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 16:39 |
|
Где ошибка???
|
|||
---|---|---|---|
#18+
А чем триггер не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 16:43 |
|
Где ошибка???
|
|||
---|---|---|---|
#18+
Ну уже вижу, что придётся всякими обходными моневрами множить объекты БД до того, пока в них путаться не начнёшь... короче, в Оракле, тоже не сахер работать (я с 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; / Лучше уже не сделать... не удобно всё это... не люблю я такую суету с размножением объектов в БД, но делать нечего... приходиться мириться :(. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 17:05 |
|
Где ошибка???
|
|||
---|---|---|---|
#18+
>Ну уже вижу, что придётся всякими обходными >моневрами множить объекты БД до того, пока в них >путаться не начнёшь... короче, в Оракле, тоже не сахер >работать (я с MS SQL пересаживаюсь на Ораклу)... >корявости в Оракле хватает... с первого взгляда уже >вижу... в общем не дуду париться и сделаю так Дело в том, что одноразовое создание дополнительных объектов, как-то триггеры и пр. не стоят для базы данных практически ничего, а вот кажущееся "удобство" microsoft зачастую совсем не бесплатно, а иногда просто скрытое от пользователя (разработчика) то же самое "размножение" от которого ты не можешь отказаться даже если тебе эта функциональность не нужна. Поэтому не стоит тут хаять Оракл. Причем на мой взгляд (не для флейма о том что лучше) основным его преимуществом перед другими бд является engine, а в во всяких облегчающих жизнь разработчика (но не конечного пользователя) примочках майкрософт конечно " впереди планеты всей". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2002, 17:19 |
|
|
start [/forum/topic.php?fid=52&fpage=2842&tid=1993116]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 319ms |
total: | 448ms |
0 / 0 |