powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Объясните разницу между DDL и DML. И еще кое-что :)...
25 сообщений из 36, страница 1 из 2
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428499
Уважаемые!

Просьба не бить ногами сразу - интербейз я только изучаю, но делаю это, так сказать, в процессе переписывания приложения, работавшего через БДЕ с парадоксовскими таблицами.

Основная мысль - по возможности перенести всю логику приложения на сервер, дабы максимально облегчить клиента. В идеале - чтобы все функции работали исключительно на сервере, а клиент с помощью ХП инициировал определенные процессы в определенное время. Пока до чего дошел - к сожалению, в таком виде проблема нерешаема. Например - в ХП/триггерах невозможно использовать DDL-вызовы, т.е. ни инициировать генератор, ни создать таблицу в теле ХП я не могу :(. А надо...

Потом - существует ли серверный процесс, в контексте которого я могу выполнять определенные действия? Ну что-то типа того, чтобы при открытии базы сервер выставлял бы начальное значение генератора - если оно равно нулю.

Также очень помогли бы советы по выбору компонентов для Дельфи 7, с помощью которых работать с базой... Прочитав Ковязина/Вострикова (пока до середины дошел :), склоняюсь к FIBPlus - вплоть до того, что если оно будет действительно полезно, куплю... 750 р. - не те деньги, за которые стоит переживать ;). Очень буду благодарен за ссылку на русский ресурс, посвященный FIBPlus.

Программер из меня... кгхм... слабенький - основная деятельность - администрирование сетей Netware. Так что сразу прошу прощения за глупые вопросы :)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428782
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет
Ногами бить не буду :)) тем более ты начал с самого правильного с изучения литературы, значит далеко пойдешь, если нужно будет.

далее по делу. Логику перенести на сервер, очень верная мысль. Так будет проще разобраться и с безопасностью, и расчитать какие-то параметры, и уменьшить трафик на сети. В ХП создавать процы, таблицы и прочие объекты и не нужно. Достаточно сделать один раз и пользоваться. Тем самым будет нормально бэкапы работать. Вобщем нужна правильная структура сразу. Серверного процесса в твоем понимании нет. По крайней мере в интербэйзе. Вопрос, зачем нужно выставлять генератор в 0 при открытии базы? Класическое использование генератора -- создание уникальной последовательности чисел. Как правило для первичного ключа таблицы. Соответственно сбрасывать в ноль его будет более чем не прааильно. Кстате, частенько возникает беспокойство по поводу хватит ли мне генератора? даже если генерировать по одной строке в секунду в режиме 7*24 получим хватит более чем на 60 лет. И это используя только 32 разряда. А можно и 64...

По выбору компонентов. Народ вроде хвалит FIBPlus... Не знаю не юзал, но работают совсем не детские проекты у меня на IBX... тем более в семерке слышал (у меня пятерка и IBX не обновлены) существуют компоненты для написания собственного администратора для сервера... Вобщем меня они устраивают, хотя на вкус и цвет товарищей нет.

по поводу ресурса, если по IB и его клонам, то посмотри на www.ibase.ru очень приятный сайт...
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428883
StarWind - генератор мне не надо выставлять в ноль. У меня уже есть таблицы с заполненными ключевыми полями - перенес из парадокса. Вопрос был - если генератор выставлен в ноль (т.е. не инициализирован), каким образом его прописать? Я так понял, что мне надо его проиницализировать только один раз - потом он будет давать уникальные значения. Собственно - пока я не понял, во-первых, с какой стороны и в какой момент времени мне это делать. С сервера или с клиента? Если по п.1 вопрос решен - каким именно образом выставлять значение генератора run-time?

По поводу компонентов - не один раз видел в сети, да и авторы книги говорят, что IBX по сравнению с FIBPlus кривоват.

Клоны - выбрал Firebird.
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428928
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ты всё-таки сначала хоть что-то почитаешь ? Прежде, чем задавать вопросы, ответ на который на первых страницах всех книг...
:)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428935
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выставить значение генератора можно не только с помощью DDL:
Код: plaintext
SET GENERATOR GEN_TABLE001 TO xxx;

но и с помощью SQL конечно же, например нужно нам выставить его в 0:
Код: plaintext
1.
2.
3.
SELECT
  GEN_ID(GEN_TABLE001, -GEN_ID(GEN_TABLE001,  0 )) 
FROM
  RDB$DATABASE

вызов GEN_ID(GEN_TABLE001, 0) дает текущее значение, ну и в любое значение следовательно так:
Код: plaintext
1.
2.
3.
SELECT
  GEN_ID(GEN_TABLE001, -GEN_ID(GEN_TABLE001,  0 )+xxx) 
FROM
  RDB$DATABASE

А при коннекте клиента можно запускать с клиента процедуру инициализации, только при количестве клиентов больше одного(ИМХО) смысла это не имеет и программировать нужно по-другому...
А компоненты ... Я очень доволен FIBPlus http://www.fibplus.com.ua/rus/index.shtml
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428937
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Может ты всё-таки сначала хоть что-то почитаешь ?

Johnmen, человек говорит, что читал пол-книги Ковязина. Не надо так с новичками, плз. Если тебе трудно кратко ответить - подожди, может ответит кто-нибудь, и вопрос будет исчерпан
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428943
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вкратце - один раз запускаете SET GENERATOR GEN_TABLE001 TO xxx; а потом (best practice) в триггере на добавление делаете new.id = GEN_ID(GEN_TABLE001, 1)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428947
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fedd

Лично я Ковязина не читал. Неужели про генераторы во второй половине книги ? :)
Не обращай внимания на тон моего предыдущего поста, он может показаться грубоватым... Но он призван "взбодрить" автора :)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32428953
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не обращаю, я просто пытаюсь таким образом выполнять модераторские обязанности. вдруг администратор нетваре не знает что такое ":)" в твоем посте и обидится?
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429346
Johnmen и прочим - парни, я прекрасно понимаю раздражение от глупых вопросов :) Но я уже извинился заранее.

Теперь - про генераторы... В книге про генераторы - в первой половине. До того читал доку по шестому интербейзу - ибо это уже не первый подход, просто сейчас, что называется, "клиент дозерл" (с)...
Я прекрасно осведомлен про Set Generator ... Вопрос, собственно, в том - как вызвать на исполнение эту команду run-time! Ломал голову две недели - ответа пока не нашел. Почему сюда и обратился :)

Пробовал сделать через FIBPlus-компонент pFIBQuery - вбил туда:

If Select Max(ID) Grom Table=0 Then Set Generator ...

Не катит! Повесил это хозяйство на событие pFIBDatabase.AfterConnect. Ошибка вываливается и все тут!

Был бы крайне признателен за описание FIBPlus на языке родных осин. Прекрасно понимаю, что читать доки "в оригинале" есть хороший тон - мне просто некогда этим заниматься. По ряду причин. Мне нужен ответ - и быстро.

Ни на кого не обиделся и прошу прощения, если кого-то обидел :)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429354
Да, вот еще что... Я видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы... Но, во-первых, так там делать не рекомендуется, а, во-вторых, сам не люблю "недокументированные возможности". Хочется сделать именно через нормальный синтаксис SQL-команд. Ибо ковыряние в системных таблицах... От чего-то у меня печень ныть начинает при мыслях об этом... Нет, если, конечно, нельзя обойтись без этого - придется, ессно... Только зачем тогда придумали Set Generator? ;)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429361
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван ЛевшинЯ видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы...
Чушь полная. Не мог Лексей Ковязин такой бред написать.
Дежа-вю, батенька?
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429372
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван Левшин
я прекрасно понимаю раздражение от глупых вопросов


Ни в коей мере ! Никакого раздражения !

Иван Левшин
про Set Generator ... Вопрос, собственно, в том - как вызвать на исполнение эту команду run-time


В IBQuery/pFIBQuery прописать SET GENERATOR TO <новое значение>.
Есть еще такая ф-ия, как GEN_ID()

...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429380
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Чушь полная. Не мог Лексей Ковязин такой бред написать.


Нет не чушь. Очень даже... Но не стОит...

...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429386
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обидно даже немножко, что Иван Левшин не читал мой пост, где есть ответ на его вопрос...\r
все же прочитайте\r
\r
Выполняете FIBQuery со следующим текстом - генератор в нуле\r
Код: plaintext
1.
2.
3.
SELECT\r
  GEN_ID(GEN_TABLE001, -GEN_ID(GEN_TABLE001,  0 )) \r
FROM\r
  RDB$DATABASE
\r
\r
хотите в ноль по условию - пишите ХП. или так :\r
\r
Код: plaintext
1.
2.
3.
4.
5.
SELECT\r
  GEN_ID(GEN_TABLE001, -GEN_ID(GEN_TABLE001,  0 )) \r
FROM\r
  RDB$DATABASE\r
WHERE\r
   0 =(Select Max(ID) Grom Table)
\r
\r
Иван ЛевшинПрекрасно понимаю, что читать доки "в оригинале" есть хороший тон - мне просто некогда этим заниматься.\r
и кстати, для FIBPlus родной язык - русский\r
Иван ЛевшинМне нужен ответ - и быстро.\r
... моментально, торопливый вы наш
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429398
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnmenНет не чушь. Очень даже... Но не стОит...
Повторяю, для особо упёртых, ЧУШЬ ПОРОСЯЧЬЯ !
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429408
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван ЛевшинЯ видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы...
JohnmenНет не чушь. Очень даже... Но не стОит...

Пустые споры, пусть авторы приведет пример такого запроса на изменение значения генераторы через системные таблицы, мне кажется, что подобного запроса не существует в природе...

-----------------------------------------------------------------
когда я ем, я глух и нем, когда я пью, вообще дурной
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429426
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я чтоли неправильно понимаю?

человек уже понял:

Иван ЛевшинЯ так понял, что мне надо его проиницализировать только один раз - потом он будет давать уникальные значения. Собственно - пока я не понял, во-первых, с какой стороны и в какой момент времени мне это делать

ну и сделать один раз (не в "ран тайме") это из ИБЭксперта. Вот он перекачал данные из парадокса, нашел макимум и установил генератор, как сказал Могун:

SET GENERATOR GEN_TABLE001 TO xxx;

а потом, чтобы следующее число получать, нужно делать "в ран тайме" (лучше в триггере)

GEN_ID(GEN_TABLE001, 1)

по моему, это и есть то, что человеку нужно.

а вы тут че-то в системные таблицы полезли..

или я не догоняю?
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429436
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если человек пишет программу, которую применяет не он один, то есть смысл, перед началом работы с базой, для подобных действий
--------------------------------------------------------------------
Это вам не шубу в трусы заправлять!
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429845
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Повторяю, для особо упёртых, ЧУШЬ ПОРОСЯЧЬЯ!


Признаю, что был неправ ! Видимо подклинило меня

А то, что якобы Ковязин про это написал, лишний раз подтверждает моё предположение (сделанное еще перед первым моим постом), что автор вопроса не только не читает ответы, но и книгу не читал. А значит сознательно врал отвечающим...
Таким людям помогать неохота...

...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429854
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Таким людям помогать неохота...

лично я если отвечаю, по большей части делаю это для себя! и всем советую. а для себя это нужно: чтобы не забыть самому как там что, чтобы попонтоваться, чтобы получить благодарность, еще массу причин можно найти! :)
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429895
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnmenПризнаю, что был неправ !

Johnmen, так авторитета не заработать, если взялся за гуж, не говори...


-----------------------------------------------------------------------------
Плохая примета, когда тебе дорогу перебежала черная кошка с пустыми
ведрами.
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429914
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fedd

:)

>Могун

Э-э-э... Не понял...
Просто признал свою очевидную ошибку. Причем тут авторитет ?
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32429976
Что я могу сказать :) Лишний раз убедился, что здесь - нормальный полноценный форум. Это раз... Народ, который занимается компьютерами - несколько мнящий о себе - это два... Есть еще и три - но тогда пост уже превратится во флейм :)
Итак, по порядку:

1. Могун - виноват. Действительно, в Ковязине этого нет. Про генераторы. Действительно, на с. 34 прямо сверху - Select для получения значения генератора. Собственно, вопрос про системные таблицы - если можно сделать Select - почему нельзя сделать Update без условия Where? В таблице все равно только одна строка - ее он и перепишет. Говорю сразу для любителей ткнуть носом - я размышляю. А не подаю вселенские истины. Посему прошу еще раз не судить строго. Хотя, по большому счету, мне безразлично - мне важен результат, а не ваше ко мне отношение.

Про FIBPlus - я осведомлен, где и как он делается. При этом дока, лежащая на сайте - на буржуинском. Читать на нем я читаю, но не настолько, чтобы после десятка страниц не вскипала голова. Ибо программирование и администрирование - суть разные явления со своим набором терминов и оборотов речи. Не веришь - могу переслать пару док по настройке того же ZEN - а потом попросить по-честному ответить - все ли понял и нет ли вопросов ;)

2. fedd - я понимаю, что можно руками сделать все на свете. Просто мне надо получить универсальное приложение, работающее с минимальным вмешательством рук (я не про интерфейс говорю, а про настройки). Причина - именно та, которую описал Могун .

3. Johnmen - в мыслях не держал заставлять кого-то оказывать мне помощь. Не хочется - сюда можно просто не отвечать ;). Это я так, на случай, если это очевидное решение сразу в голову не пришло.

Ко всем - парни... Если очень хочется поумничать насчет моей безграмотности - ivan19@email.ru. Сюда можно слать любой хлам, не относящийся к вопросу. Ибо мне все равно - а вам приятно :). Еще раз прошу прощения - если кого задел и обидел. Цели такой не имел.

По существу вопроса - про Gen_ID - понимаю, читал. Пользоваться умею. На парадоксе - писал, оттого не падаю в обморок от слов таблица, база данных и пр. Хотя, безусловно, признаю ваш авторитет в области программирования - по причинам, изложенным в начале треда. Если можно - больше конкретики. Например - насколько работоспособна конструкция, описанная в моем втором ответе. Там, где If Select...
...
Рейтинг: 0 / 0
Объясните разницу между DDL и DML. И еще кое-что :)...
    #32430005
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все очень просто значения генераторов не лежат в таблице - они в системной странице БД и доступны лишь функции GEN_ID, плюс SET/CREATE/DROP... Все AFAIK
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Объясните разницу между DDL и DML. И еще кое-что :)...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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