|
|
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Иван ЛевшинНапример - насколько работоспособна конструкция, описанная в моем втором ответе. Там, где If Select Max(ID) Grom Table=0 Then Set Generator ... Вы убедились, что она неработоспособна ;)). Нельзя смешивать SQL(select ...) и DDL(SET GENERATOR...). конструкция IF возможна только в ХП, и в хранимых процедурах(которые по сути - SQL) DDL тоже нельзя использовать. Иван ЛевшинСобственно, вопрос про системные таблицы - если можно сделать Select - почему нельзя сделать Update без условия Where? В таблице все равно только одна строка - ее он и перепишет. В какой системной таблице одна строка, которую вы собираетесь переписать? А системная таблица генераторов определена так: Код: plaintext 1. 2. 3. и в ней ЗНАЧЕНИЙ генераторов просто-таки нет. ----------------------------------------------------------------------------- Даже у самого плохого человека можно найти что-то хорошее, если его тщательно обыскать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 18:03 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
ОК :) Спасибо за ответ :) Теперь ясно. Резюмируя - я могу выставить значение генератора либо руками через любое средство администрирования, либо воспользоваться тем же pFIBQuery, где надо прописать DDL-запрос. Значение генератора - получать через Select Max()... или таким образом, как указал Могун и передавать значение как параметр в pFIBQuery. Привязывать компонент на AfterConnection. Все правильно? Оффтоп - что есть AFAIK? Подозреваю, что из разряда RTFM :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 18:31 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
аз фар аз и кноу, что переводится на наш русский "кажись" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 18:34 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
AFAIK - As Far As I Know Выставить значение генератора всегда можно с помощью GEN_ID, как и говорили все до меня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 18:35 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
>Иван Левшин Значение генератора - получать через Select Max() ... Если разговор про следующее значание генератора, то так нельзя . Надо: SELECT GEN_ID(GEN_TABLE001, 1) FROM RDB$DATABASE Для тригера обязательная конструкция: if (new.id is null) then new.id = GEN_ID(GEN_TABLE001, 1) ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 07:42 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Нет, разговор не про следующее значение генератора, а только о его инициализации. Проблема в том, что я не могу изначально выставить его, например, в единичку - потому что есть пара баз, где значение ключевых полей, для которых он должен генерировать значения, уже заполнены. Мне надо генератор единожды проинициализировать - потом уже пользоваться Gen_ID(). Просто не хочется делать этого руками :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 09:14 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Огромное всем спасибо за помощь :) Я получил ответы на все интересующие меня вопросы. Извините, если что не так кому показалось :). Будут еще вопросы - возникну еще раз. Еще раз всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 09:15 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
хоть тема и типа закрыта, я добавлю для будующих поколений. Denis UskovДля тригера обязательная конструкция: if (new.id is null) then new.id = GEN_ID(GEN_TABLE001, 1) эта конструкция вовсе не обязательна. просто она позволяет в таблицу явным образом инсетром прописать значение уникального ключа, например, для старых записей. если по смыслу задачи этого не требуется или вредно, так делать не надо. например, если туда прописать какое-то из будущих значений, то однажды генератор сможет сам дойти до этой цифры, и черт знает что тогда будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 12:40 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
fedd ... если туда прописать какое-то из будущих значений, то однажды генератор сможет сам дойти до этой цифры, и черт знает что тогда будет. Максимум что, так это ругательство на дубликат ПК. Я так понимаю ты сам предлагаешь контролировать значения ПК??? Так в этом случае проблем намного больше. И конструкция Код: plaintext более гибка, чем Код: plaintext ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:57 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
> Я так понимаю ты сам предлагаешь контролировать значения ПК??? почему это предлагаю?! наоборот, предлагаю поручить это только генератору и заменять введенное значение на сгенерированное генератором. просто сообщил, что конструкция не "обязательная", а "более гибкая", вот! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:01 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Просто мы друг друга не поняли :-) У меня генератор заполняется в тригере только когда добавление не требует последующего Refresh'а из клиента(массовая вставка и т.д.), но значение для ПК при добавлении с Refresh'ем на клиенте ВСЕГДА берется из генератора. Вот. Думаю тема действительно закрыта :-) ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:09 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32431402&tid=1579097]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
185ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 494ms |

| 0 / 0 |
