|
|
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production Хм... Т.к. работает команда, то получилось следующее: В схеме создали функцию: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. И в таблицу добавили поле: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. FLAG_ACTUAL - вычисляемое поле в таблице... (ранее этого поля не было) Все удовлетворяет, все вроде хорошо... НО... При переносе всех схем ДАМПОМ на другой сервер (т.к. поля не было, то все проходило на ура), выкатилась ошибка: Starting "SYSTEM"."SYS_IMPORT_FULL_01": SYSTEM/********@ORCLTEST dumpfile=DATA_PUMP_DIR:ORCL_SCHEMAS.DMP logfile=DATA_PUMP_DIR:ORCL_SCHEMAS_log_impdp.log Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/DB_LINK Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE Processing object type SCHEMA_EXPORT/TABLE/TABLE ORA-39083: Object type TABLE:"ZAGS_NSI"."SP_ORGANIZATION_UNIQ" failed to create with error: ORA-00904: "ZAGS_NSI"."F_FLAG_ACTUAL": invalid identifier Failing sql is: CREATE TABLE "ZAGS_NSI"."SP_ORGANIZATION_UNIQ" ("ID" NUMBER(18,0) NOT NULL ENABLE, "ID_TYPE_ORG" NUMBER(18,0), "ID_PARENT" NUMBER(18,0), "KPP" VARCHAR2(9 CHAR), "OGRN" VARCHAR2(15 CHAR), "INN" VARCHAR2(12 CHAR), "OKPO" VARCHAR2(10 CHAR), "ID_LOCATION" NUMBER(18,0), "FLAG_DELETED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, "FLAG_INDIVIDUAL" NUMBER(1... И пошли ошибки.... Увидел, что из-за вычислимого поля... Т.к. таблицы создаются ранее, а потом все остальное... А в описании таблицы присутствует ссылка на функцию... Попробовал тестовую таблицу создать: Код: plsql 1. 2. 3. 4. 5. 6. 7. Error at line 1 ORA-54002: в выражении виртуального столбца можно задавать только чистые функции Как обойти это ? к концу рабочего дня все кувырком... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 15:37 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Владимир САИ пошли ошибки.... Увидел, что из-за вычислимого поля...Это хорошо, что Oracle на взлёте наказал за недетерминизм. Правильный путь - rename + create view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 15:48 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
ElicВладимир САИ пошли ошибки.... Увидел, что из-за вычислимого поля...Это хорошо, что Oracle на взлёте наказал за недетерминизм. Правильный путь - rename + create view.Расшифруй "недетерминизм"... плиз... Да я понимаю, что View надо... Но разрабы интерфейса на C#, них EF + макет... Не пойдут на это скорее всего... Но это завтра с ними говорить буду... Пока ехал домой подумал... Сделать поле не вычисляемым (стандартным)... И на триггеры INSERT, UPDATE навесить изменение поля, можно и функцию использовать... Но это завтра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:27 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Владимир САПри переносе всех схем ДАМПОМ на другой сервер (т.к. поля не было, то все проходило на ура), выкатилась ошибка: ORA-00904: "ZAGS_NSI"."F_FLAG_ACTUAL": invalid identifier Функцию-то перенес? Но суть не в этом. Ты хоть понимаешь что SYSDATE в SQL предложении вычисляется один раз а не для каждой строки в момент её выборки в то врeмя как PL/SQL вычисляет SYSDATE при каждом обращении. Посему если ты запустишь что-то типа: Код: plsql 1. 2. 3. 4. сегодня дo полуночи а закончится он после полуночи (т.е. завтра) то строки с BEGIN_DATE и/или END_DATE = сегодня получат FLAG_ACTUAL = 1 если WHERE (и соответственно вычисление FLAG_ACTUAL) произойдет до полуночи и они будут выбраны а строки с BEGIN_DATE и/или END_DATE = сегодня получат FLAG_ACTUAL = 0 если WHERE (и соответственно вычисление FLAG_ACTUAL) произойдет после полуночи и они нe будут выбраны. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:33 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Владимир САРасшифруй "недетерминизм"sysdate сегодня один, завтра другой. Владимир САСделать поле не вычисляемым (стандартным)... И на триггеры INSERT, UPDATE навесить изменение поля,Не доходит до тебя недетерминизм текущей даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:34 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Elic sysdate сегодня один, завтра другой. Это им и надо... как я понял... Тогда мой подход по триггерам неподходит... Только View... спасет отца русской демократии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:47 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Владимир САТолько View... спасет отца русской демократии... Или переход на 12C и temporal validity. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:55 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
SYtemporal validity.Этот синтаксический сахар ничего принципиально не меняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:56 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
ElicЭтот синтаксический сахар ничего принципиально не меняет. Упрощает: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 18:10 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Как-то неумело oracle в 11g сделал вычисляемые поля в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 07:06 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
SYУпрощает:Мне можно не показывать. Но где не сахар? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 07:35 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
Владимир САКак-то неумело oracle в 11g сделал вычисляемые поля в таблице.Не тебе, чудак, судить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 07:36 |
|
||
|
вычисляемое поле в таблице
|
|||
|---|---|---|---|
|
#18+
ElicВладимир САКак-то неумело oracle в 11g сделал вычисляемые поля в таблице.Не тебе, чудак, судить.Я вообще то тебя не унижал... Но оракл вообще то делает для пользователей продукт. И должен отслеживать свои фичи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 07:44 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39385816&tid=1886640]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
18ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 304ms |

| 0 / 0 |
