|
|
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Уважаемые! Просьба не бить ногами сразу - интербейз я только изучаю, но делаю это, так сказать, в процессе переписывания приложения, работавшего через БДЕ с парадоксовскими таблицами. Основная мысль - по возможности перенести всю логику приложения на сервер, дабы максимально облегчить клиента. В идеале - чтобы все функции работали исключительно на сервере, а клиент с помощью ХП инициировал определенные процессы в определенное время. Пока до чего дошел - к сожалению, в таком виде проблема нерешаема. Например - в ХП/триггерах невозможно использовать DDL-вызовы, т.е. ни инициировать генератор, ни создать таблицу в теле ХП я не могу :(. А надо... Потом - существует ли серверный процесс, в контексте которого я могу выполнять определенные действия? Ну что-то типа того, чтобы при открытии базы сервер выставлял бы начальное значение генератора - если оно равно нулю. Также очень помогли бы советы по выбору компонентов для Дельфи 7, с помощью которых работать с базой... Прочитав Ковязина/Вострикова (пока до середины дошел :), склоняюсь к FIBPlus - вплоть до того, что если оно будет действительно полезно, куплю... 750 р. - не те деньги, за которые стоит переживать ;). Очень буду благодарен за ссылку на русский ресурс, посвященный FIBPlus. Программер из меня... кгхм... слабенький - основная деятельность - администрирование сетей Netware. Так что сразу прошу прощения за глупые вопросы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2004, 18:14 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
привет Ногами бить не буду :)) тем более ты начал с самого правильного с изучения литературы, значит далеко пойдешь, если нужно будет. далее по делу. Логику перенести на сервер, очень верная мысль. Так будет проще разобраться и с безопасностью, и расчитать какие-то параметры, и уменьшить трафик на сети. В ХП создавать процы, таблицы и прочие объекты и не нужно. Достаточно сделать один раз и пользоваться. Тем самым будет нормально бэкапы работать. Вобщем нужна правильная структура сразу. Серверного процесса в твоем понимании нет. По крайней мере в интербэйзе. Вопрос, зачем нужно выставлять генератор в 0 при открытии базы? Класическое использование генератора -- создание уникальной последовательности чисел. Как правило для первичного ключа таблицы. Соответственно сбрасывать в ноль его будет более чем не прааильно. Кстате, частенько возникает беспокойство по поводу хватит ли мне генератора? даже если генерировать по одной строке в секунду в режиме 7*24 получим хватит более чем на 60 лет. И это используя только 32 разряда. А можно и 64... По выбору компонентов. Народ вроде хвалит FIBPlus... Не знаю не юзал, но работают совсем не детские проекты у меня на IBX... тем более в семерке слышал (у меня пятерка и IBX не обновлены) существуют компоненты для написания собственного администратора для сервера... Вобщем меня они устраивают, хотя на вкус и цвет товарищей нет. по поводу ресурса, если по IB и его клонам, то посмотри на www.ibase.ru очень приятный сайт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 03:15 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
StarWind - генератор мне не надо выставлять в ноль. У меня уже есть таблицы с заполненными ключевыми полями - перенес из парадокса. Вопрос был - если генератор выставлен в ноль (т.е. не инициализирован), каким образом его прописать? Я так понял, что мне надо его проиницализировать только один раз - потом он будет давать уникальные значения. Собственно - пока я не понял, во-первых, с какой стороны и в какой момент времени мне это делать. С сервера или с клиента? Если по п.1 вопрос решен - каким именно образом выставлять значение генератора run-time? По поводу компонентов - не один раз видел в сети, да и авторы книги говорят, что IBX по сравнению с FIBPlus кривоват. Клоны - выбрал Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 08:44 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Может ты всё-таки сначала хоть что-то почитаешь ? Прежде, чем задавать вопросы, ответ на который на первых страницах всех книг... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:13 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Выставить значение генератора можно не только с помощью DDL: Код: plaintext но и с помощью SQL конечно же, например нужно нам выставить его в 0: Код: plaintext 1. 2. 3. вызов GEN_ID(GEN_TABLE001, 0) дает текущее значение, ну и в любое значение следовательно так: Код: plaintext 1. 2. 3. А при коннекте клиента можно запускать с клиента процедуру инициализации, только при количестве клиентов больше одного(ИМХО) смысла это не имеет и программировать нужно по-другому... А компоненты ... Я очень доволен FIBPlus http://www.fibplus.com.ua/rus/index.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:19 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
> Может ты всё-таки сначала хоть что-то почитаешь ? Johnmen, человек говорит, что читал пол-книги Ковязина. Не надо так с новичками, плз. Если тебе трудно кратко ответить - подожди, может ответит кто-нибудь, и вопрос будет исчерпан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:19 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
вкратце - один раз запускаете SET GENERATOR GEN_TABLE001 TO xxx; а потом (best practice) в триггере на добавление делаете new.id = GEN_ID(GEN_TABLE001, 1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:24 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
>fedd Лично я Ковязина не читал. Неужели про генераторы во второй половине книги ? :) Не обращай внимания на тон моего предыдущего поста, он может показаться грубоватым... Но он призван "взбодрить" автора :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:27 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
я не обращаю, я просто пытаюсь таким образом выполнять модераторские обязанности. вдруг администратор нетваре не знает что такое ":)" в твоем посте и обидится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 09:30 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Johnmen и прочим - парни, я прекрасно понимаю раздражение от глупых вопросов :) Но я уже извинился заранее. Теперь - про генераторы... В книге про генераторы - в первой половине. До того читал доку по шестому интербейзу - ибо это уже не первый подход, просто сейчас, что называется, "клиент дозерл" (с)... Я прекрасно осведомлен про Set Generator ... Вопрос, собственно, в том - как вызвать на исполнение эту команду run-time! Ломал голову две недели - ответа пока не нашел. Почему сюда и обратился :) Пробовал сделать через FIBPlus-компонент pFIBQuery - вбил туда: If Select Max(ID) Grom Table=0 Then Set Generator ... Не катит! Повесил это хозяйство на событие pFIBDatabase.AfterConnect. Ошибка вываливается и все тут! Был бы крайне признателен за описание FIBPlus на языке родных осин. Прекрасно понимаю, что читать доки "в оригинале" есть хороший тон - мне просто некогда этим заниматься. По ряду причин. Мне нужен ответ - и быстро. Ни на кого не обиделся и прошу прощения, если кого-то обидел :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:31 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Да, вот еще что... Я видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы... Но, во-первых, так там делать не рекомендуется, а, во-вторых, сам не люблю "недокументированные возможности". Хочется сделать именно через нормальный синтаксис SQL-команд. Ибо ковыряние в системных таблицах... От чего-то у меня печень ныть начинает при мыслях об этом... Нет, если, конечно, нельзя обойтись без этого - придется, ессно... Только зачем тогда придумали Set Generator? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:33 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Иван ЛевшинЯ видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы... Чушь полная. Не мог Лексей Ковязин такой бред написать. Дежа-вю, батенька? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:37 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Иван Левшин я прекрасно понимаю раздражение от глупых вопросов Ни в коей мере ! Никакого раздражения ! Иван Левшин про Set Generator ... Вопрос, собственно, в том - как вызвать на исполнение эту команду run-time В IBQuery/pFIBQuery прописать SET GENERATOR TO <новое значение>. Есть еще такая ф-ия, как GEN_ID() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:42 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Чушь полная. Не мог Лексей Ковязин такой бред написать. Нет не чушь. Очень даже... Но не стОит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:45 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Обидно даже немножко, что Иван Левшин не читал мой пост, где есть ответ на его вопрос...\r все же прочитайте\r \r Выполняете FIBQuery со следующим текстом - генератор в нуле\r Код: plaintext 1. 2. 3. \r хотите в ноль по условию - пишите ХП. или так :\r \r Код: plaintext 1. 2. 3. 4. 5. \r Иван ЛевшинПрекрасно понимаю, что читать доки "в оригинале" есть хороший тон - мне просто некогда этим заниматься.\r и кстати, для FIBPlus родной язык - русский\r Иван ЛевшинМне нужен ответ - и быстро.\r ... моментально, торопливый вы наш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:48 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
JohnmenНет не чушь. Очень даже... Но не стОит... Повторяю, для особо упёртых, ЧУШЬ ПОРОСЯЧЬЯ ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:51 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Иван ЛевшинЯ видел в том же Ковязине, что можно выставлять значение генератора, изменяя системные таблицы... JohnmenНет не чушь. Очень даже... Но не стОит... Пустые споры, пусть авторы приведет пример такого запроса на изменение значения генераторы через системные таблицы, мне кажется, что подобного запроса не существует в природе... ----------------------------------------------------------------- когда я ем, я глух и нем, когда я пью, вообще дурной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 12:58 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
это я чтоли неправильно понимаю? человек уже понял: Иван ЛевшинЯ так понял, что мне надо его проиницализировать только один раз - потом он будет давать уникальные значения. Собственно - пока я не понял, во-первых, с какой стороны и в какой момент времени мне это делать ну и сделать один раз (не в "ран тайме") это из ИБЭксперта. Вот он перекачал данные из парадокса, нашел макимум и установил генератор, как сказал Могун: SET GENERATOR GEN_TABLE001 TO xxx; а потом, чтобы следующее число получать, нужно делать "в ран тайме" (лучше в триггере) GEN_ID(GEN_TABLE001, 1) по моему, это и есть то, что человеку нужно. а вы тут че-то в системные таблицы полезли.. или я не догоняю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 13:07 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Если человек пишет программу, которую применяет не он один, то есть смысл, перед началом работы с базой, для подобных действий -------------------------------------------------------------------- Это вам не шубу в трусы заправлять! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 13:12 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Повторяю, для особо упёртых, ЧУШЬ ПОРОСЯЧЬЯ! Признаю, что был неправ ! Видимо подклинило меня А то, что якобы Ковязин про это написал, лишний раз подтверждает моё предположение (сделанное еще перед первым моим постом), что автор вопроса не только не читает ответы, но и книгу не читал. А значит сознательно врал отвечающим... Таким людям помогать неохота... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 16:33 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
> Таким людям помогать неохота... лично я если отвечаю, по большей части делаю это для себя! и всем советую. а для себя это нужно: чтобы не забыть самому как там что, чтобы попонтоваться, чтобы получить благодарность, еще массу причин можно найти! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 16:40 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
JohnmenПризнаю, что был неправ ! Johnmen, так авторитета не заработать, если взялся за гуж, не говори... ----------------------------------------------------------------------------- Плохая примета, когда тебе дорогу перебежала черная кошка с пустыми ведрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 16:57 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
>fedd :) >Могун Э-э-э... Не понял... Просто признал свою очевидную ошибку. Причем тут авторитет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 17:07 |
|
||
|
Объясните разницу между DDL и DML. И еще кое-что :)...
|
|||
|---|---|---|---|
|
#18+
Что я могу сказать :) Лишний раз убедился, что здесь - нормальный полноценный форум. Это раз... Народ, который занимается компьютерами - несколько мнящий о себе - это два... Есть еще и три - но тогда пост уже превратится во флейм :) Итак, по порядку: 1. Могун - виноват. Действительно, в Ковязине этого нет. Про генераторы. Действительно, на с. 34 прямо сверху - Select для получения значения генератора. Собственно, вопрос про системные таблицы - если можно сделать Select - почему нельзя сделать Update без условия Where? В таблице все равно только одна строка - ее он и перепишет. Говорю сразу для любителей ткнуть носом - я размышляю. А не подаю вселенские истины. Посему прошу еще раз не судить строго. Хотя, по большому счету, мне безразлично - мне важен результат, а не ваше ко мне отношение. Про FIBPlus - я осведомлен, где и как он делается. При этом дока, лежащая на сайте - на буржуинском. Читать на нем я читаю, но не настолько, чтобы после десятка страниц не вскипала голова. Ибо программирование и администрирование - суть разные явления со своим набором терминов и оборотов речи. Не веришь - могу переслать пару док по настройке того же ZEN - а потом попросить по-честному ответить - все ли понял и нет ли вопросов ;) 2. fedd - я понимаю, что можно руками сделать все на свете. Просто мне надо получить универсальное приложение, работающее с минимальным вмешательством рук (я не про интерфейс говорю, а про настройки). Причина - именно та, которую описал Могун . 3. Johnmen - в мыслях не держал заставлять кого-то оказывать мне помощь. Не хочется - сюда можно просто не отвечать ;). Это я так, на случай, если это очевидное решение сразу в голову не пришло. Ко всем - парни... Если очень хочется поумничать насчет моей безграмотности - ivan19@email.ru. Сюда можно слать любой хлам, не относящийся к вопросу. Ибо мне все равно - а вам приятно :). Еще раз прошу прощения - если кого задел и обидел. Цели такой не имел. По существу вопроса - про Gen_ID - понимаю, читал. Пользоваться умею. На парадоксе - писал, оттого не падаю в обморок от слов таблица, база данных и пр. Хотя, безусловно, признаю ваш авторитет в области программирования - по причинам, изложенным в начале треда. Если можно - больше конкретики. Например - насколько работоспособна конструкция, описанная в моем втором ответе. Там, где If Select... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 17:34 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=483&tid=1579097]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
150ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 429ms |

| 0 / 0 |
