Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Мне, наверное, везёт на закрытые темы :) Тем не менее, не разжигая флейма, хотелось бы всё-таки ответить : ChA hvladОграничения на таблицах ? Вот пусть таблицы его и проверяютВсе на самом деле несколько иначе. При обновления данных через view существуют определенные ограничения, которые, во-первых, описаны явно в документации, во-вторых, ограничения для подобных view есть в описании стандарта ANSI, хотя не готов ставить между ними полного равенстваХотелось бы ссылку на стандарт. ChAФакт то, что они существуют, ведь, надеюсь, понятно, что не всякое view можно обновить ?Причём тут это ? ChA Ровно исходя из этого и берется определенная информация об ограничениях прямо из базовых таблиц, кажется это правильным или нет. Есть триггера INSTEAD или нет - дело последнее, их наличие не меняет ситуации, это просто механизм, который срабатывает при определенных условиях, не более того. Соответственно, поведение updatable views не меняется от того, добавили потом триггера или нетНе нужно притягивать за уши поведение конкретного сервера и объявлять его единственно правильным. Есть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере, при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. В MSSQL2K такой триггер (INSTEAD OF INSERT конечно) просто не вызывается ChA hvladДа, да - "дизайн" syscomments - верх совершенства, давайте пихать его во все дыры Не надо передергивать, вопрос сколько урлов должно быть в записи, целиком и полностью зависит от проектирования. Плохо, когда ограничения СУБД мешают ему, но, допустим, проектировщик добавляет поля url1, ..., urlN в одну запись на все случаи жизни. В этом случае у меня лично возникают некоторые сомнения в адекватности подходаНе зная постановки задачи, я бы не стал говорить о качестве проектирования. ФИО Вы тоже храните в 3-х записях ? ChAА чем syscomments не угодила, совсем непонятно, что Вы там забыли ?Тексты процедур и триггеров, как ни странно :) А Вы что думали ? Или это очередная священная корова ? ChAЭто вотчина разработчиков СУБД, и если они применили этот подход, то возможно нашли в нем положительные качества. Или Вы считаете, что безусловно правы ? Тогда нет вопросов, MSSQL делали бараны.Конечно нет вопросов, особенно глядя на клиентский утиль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 17:32 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
авторЕсть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере, при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. В MSSQL2K такой триггер (INSTEAD OF INSERT конечно) просто не вызывается В Delphi нет множественного наследования, а в "нормальном" языке (С++) есть!!! Не улавливаете аналогии?! авторНе нужно притягивать за уши поведение конкретного сервера и объявлять его единственно правильным. Не надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным. Если я счас полезу с подходами, используемыми мною при работе с MS SQL к Oracle и буду орать, что там это не так и это не эдак и поэтому Oracle неправильная СУБД, то что здесь начнеться?! Это поведение описано в документации. Т.е. оно by design. Нравиться это Вам или не нравиться, но с этим придеться мириться или отказаться от использования этой "другой СУБД". Отсутствие множественного наследования в Delphi, тем не менее, ни чуть не мешает создавать на нем "качественные" приложения. Тоже самое касается и "другой СУБД". авторТексты процедур и триггеров, как ни странно :) И что Вы такое вытворяете с текстами хп и триггеров в своих проектах, что Вам так неугодила syscomments? авторКонечно нет вопросов, особенно глядя на клиентский утиль Когда аргументов нет в "бой идут" понятия. Ну не нравиться Вам клиентский утиль - напишите свой. Функционал СУБД и ее применимость в первую очередь ни этим определяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 17:55 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklin авторЕсть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере, при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. В MSSQL2K такой триггер (INSTEAD OF INSERT конечно) просто не вызывается В Delphi нет множественного наследования, а в "нормальном" языке (С++) есть!!! Не улавливаете аналогии?!Нет не улавливаю. Вот если бы в реализации C++ от Борланд не было мн.насл., то я бы тоже объявил это багом. pkarklin авторНе нужно притягивать за уши поведение конкретного сервера и объявлять его единственно правильным. Не надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным. Если я счас полезу с подходами, используемыми мною при работе с MS SQL к Oracle и буду орать, что там это не так и это не эдак и поэтому Oracle неправильная СУБД, то что здесь начнеться?! Это поведение описано в документации. Т.е. оно by design. Нравиться это Вам или не нравиться, но с этим придеться мириться или отказаться от использования этой "другой СУБД".Это баг. Я не могу использовать VIEW + INSTEAD OF триггер по назначению - скрыть логику от конечного приложения. pkarklinОтсутствие множественного наследования в Delphi, тем не менее, ни чуть не мешает создавать на нем "качественные" приложения. Тоже самое касается и "другой СУБД".Аналогия неверная. pkarklin авторТексты процедур и триггеров, как ни странно :) И что Вы такое вытворяете с текстами хп и триггеров в своих проектах, что Вам так неугодила syscomments?Читаю, просто читаю. Низзя ? Из-за убогости поставляемого клиентского утиля, я, вплоть до MSSQL2K, пользовался редактором кода Дельфи для написания процедур. В MSSQL2K хоть синтаксис подсвечивается в Query Analyzer'е :) pkarklin авторКонечно нет вопросов, особенно глядя на клиентский утиль Когда аргументов нет в "бой идут" понятия. Ну не нравиться Вам клиентский утиль - напишите свой. Функционал СУБД и ее применимость в первую очередь ни этим определяется.Та написал, написал :) Угу, не этим. А возможностями триггеров, в частности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:27 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
авторНе надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным Разумные выводы. Редко встретишь. Особенно в "Сравнение СУБД" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:28 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklinЭто поведение описано в документации. Т.е. оно by design. Нравиться это Вам или не нравиться, но с этим придеться мириться или отказаться от использования этой "другой СУБД".Кстати, не могу найти в BOL MSSQL2K такого описания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:29 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Привет, pkarklin! Ты пишешь: pkarklinp> В Delphi нет множественного наследования, а в "нормальном" языке (С++) есть!!! p> Не улавливаете аналогии?!С# говно! В нем нет множественного наследования. M$ специально делает говно. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:30 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafm авторНе надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным Разумные выводы. Редко встретишь. Особенно в "Сравнение СУБД" :)Сами по себе - да. Но не в данном случае :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:30 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklinВ Delphi нет множественного наследования, а в "нормальном" языке (С++) есть!!! И это один из недостатков Delphi. pkarklinНе надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным. По моим ощущениям, Вы вскипели несколько зря, особенно если учесть, что мне по этому же поводу, если только не изменяет память, Вы ответили несколько иначе. Я не вижу, чтобы Ваш собеседник "объявлял абсолютно неправильным"; насколько я вижу, он всего лишь сказал, что не стоит объявлять подход, существенно снижающий ценность механизма updateable view, единственно правильным. pkarklinЭто поведение описано в документации. Т.е. оно by design. И? by design - это аргумент из серии "это не ошибка, это системная функция". Существует стандартный подход - триггера срабатывают до проверки ограничений. Это позволяет легко и приятно решать многие задачи; скажем, мне было бы любопытно посмотреть на не использующее этого подхода нормальное решение следующей простой задачи: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Насколько я понимаю, в рассматриваемом случае этот принцип нарушается. Что ж, жаль. Еще один факт в копилку утверждения о том, что подход "все на процедурах" базируется не столько на хорошести процедур, сколько на слабости прочих механизмов в конкретном случае. pkarklinНравиться это Вам или не нравиться, но с этим придеться мириться или отказаться от использования этой "другой СУБД". Хм. То есть предлагаете расслабиться и получать удовольствие? pkarklinОтсутствие множественного наследования в Delphi, тем не менее, ни чуть не мешает создавать на нем "качественные" приложения. Ну, я бы сказал, что это высказывание из серии "зелен виноград". pkarklinТоже самое касается и "другой СУБД". --//-- pkarklinКогда аргументов нет в "бой идут" понятия. Именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:31 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Привет, softwarer! Ты пишешь: softwarer pkarklinВ Delphi нет множественного наследования, а в "нормальном" языке (С++) есть!!! s> И это один из недостатков Delphi.Я вас умоляю, не ешьте на ночь сырых помидоров! Концепция Multiple Inheritance весьма спорная. Битвы в ООП-форумах всё ещё бушуют. Преподносить это , как акуенное достоинство, либо же акуительный недостаток, право же, не стОит... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:38 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
hvladХотелось бы ссылку на стандарт.В сети эти стандарты не выставлены, по причине, если правильно помню, что за них надо платить. В то же время отдельными файлами мелькает, если захотите, то найдете. Начните, например, отсюда ISO/IEC 9075-2:1999 (E) 11.21 <view definition> Syntax Rule ... 9) The viewed table is updatable if and only if the <query expression> is updatable. ... И далее по списку, какие <query expression> бывают updatable, но это уж сами как-нибудь. Даже странно, что, по слухам, разработчику некоей СУБД, надо объяснять то, что худо-бедно, но таки описано в стандарте ANSI-SQL. Интересно, как Вы собираетесь обновлять view с OUTER JOIN, например ? Тем более, если в списке полей view некоторые поля из OUTER отсутствуют. А если вместо полей используются выражения ? hvladПричём тут это ?При том, что в данном случае Вы вырвали фразы из контекста в котором она имела смысл. hvladНе нужно притягивать за уши поведение конкретного сервера и объявлять его единственно правильным.Есть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере, при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. В MSSQL2K такой триггер (INSTEAD OF INSERT конечно) просто не вызываетсяПочему-то мне кажется, что это пытаетесь сделать Вы. Я всего лишь попытался описать, почему так происходит в MSSQL. Если Вы были и его разработчиком, и точно знаете, что все не так, буду только рад услышать больше. Повторюсь, обновляемость view никоим образом не зависит от наличия/отсутствия триггеров, по крайней мере, в стандарте этого не видел, хотя и готов допустить, что был невнимателен. Если вдруг найдете, то буду благодарен, если устраните пробел в моей памяти. hvladНе зная постановки задачи, я бы не стал говорить о качестве проектирования. ФИО Вы тоже храните в 3-х записях ?Абсолютно с Вами согласен, именно поэтому и был специально приведен пример. Не исключаю, что в зависимости от задачи и ФИО может оказаться в 3-х записях. Но "в лоб" отражать XML в структуру таблицы мне представляется не совсем верным. hvladТексты процедур и триггеров, как ни странноЕсть другие, вполне документированные способы, их получить. Вы, вероятно, предпочитаете, недокументрованные, но тогда не надо делать больших глаз. Еще раз повторю, если разработчики MSSQL решили использовать такой способ, то вероятно были определенные резоны для такого решения. Мне видится связь с тем, что, статистически, процедур больше 8КБ не так уж много, чтобы непременно использовать для их хранения image/text. Но это всего лишь мое мнение, возможно у них были другие, более веские основания. hvladнет вопросов, особенно глядя на клиентский утильДопускаю, что Вы не смогли в нем разобраться, но не уверен, что это безусловная проблема их разработчиков. Мне, например, за много лет никаких средств третьих фирм не понадобилось. P.S. hvlad, огромная просьба не входить в раж и обходиться без особого полемического задора. Мы либо пытаемся найти общий язык, либо доказать кто находчивее. Мне кажется, что здесь не КВН. Если Вы считате иначе, и стеб считается аргументом, то позвольте откланяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 19:13 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Привет, ChA! Ты пишешь: ChAC> Интересно, как Вы собираетесь обновлять view с OUTER JOIN, например ? C> Тем более, если в списке полей view некоторые поля из OUTER отсутствуют. C> А если вместо полей используются выражения ?ПоплакалЪ Аффтар редкостный специализд! MsSQL форева! -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 19:18 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
2 ChA: авторC> Интересно, как Вы собираетесь обновлять view с OUTER JOIN, например ? C> Тем более, если в списке полей view некоторые поля из OUTER отсутствуют. C> А если вместо полей используются выражения ? С такой логикой таблица с COMPUTED BY полем тоже необновляемая, так? Триггер INSTEAD OF как раз предназначен для того чтобы выполнить действия вместо операции, производимой над представлением. Это своего рода полиморфизм. Поля у меня есть (неважно как они получены). Что мешает мне перекрыть в триггере INSTEAD OF страндартное поведение команды INSERT и выполнить нужное мне действие? Конкретно в MSSQL попробуйте создать представление на таблице с IDENTITY NOT NULL и вставить данные в таблицу. Возможно даже INSTEAD OF триггер не понадобиться. Сервер просто обяжет вас задать значение поля IDENTITY, что есть бред, потому как IDENTITY будет заполнено автоматически совсем другим значением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 20:34 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к примеру из закрытого топика с Update - таки есть в BOL описание нового синтаксиса, правда... очень оно хитро закопано mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\instsql.chm::/in_backcomp2_4dvd.htm Compatibility, UPDATE (Level 4) In Microsoft SQL Server version 6.0, the following UPDATE statement, using two different table aliases for the same base table, was allowed: CREATE TABLE t1 (c1 int) GO INSERT t1 VALUES (1) INSERT t1 VALUES (2) GO UPDATE t1 SET c1 = 50 FROM t1 a1, t1 a2 WHERE a1.c1 = 1 AND a2.c1 = 2 GO MS SQL Server 2000 Syntax no longer supported. Use the alias, rather than the table name, after the UPDATE keyword. The UPDATE statement would be rewritten to: UPDATE a1 SET c1 = 50 FROM t1 a1, t1 a2 WHERE a1.c1 = 1 AND a2.c1 = 2 Expect differences in behavior as compared to SQL Server version 6.0. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 20:50 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
МимопроходящийЯ вас умоляю, не ешьте на ночь сырых помидоров! Хм. Кстати, спасибо за идею. МимопроходящийКонцепция Multiple Inheritance весьма спорная. Битвы в ООП-форумах всё ещё бушуют. Преподносить это , как акуенное достоинство, либо же акуительный недостаток, право же, не стОит... Тем более не стоит преподносить столь банальную и не столь однозначную истину. Как факт, нынешняя дельфа затягивает в себя никак не менее спорные, но однозначно менее полезные концепции. Хорошо бы уж тогда сделать действительно большой шаг вперед. А насчет "зелен виноград" - увы, примеров выше крыши. Те же яверы долго рассказывали, как не нужны template-ы и до сих пор рассказывают, какая гадкая вещь - переопределение операторов. В спорах вокруг вышеупомянутого сервера ненужность версионности постулировалась до тех пор, пока ее не появилось. С множественным наследованием ситуация более очевидна; в любой большой библиотеке классов, в той же VCL, легко указать места, где отсутствие множественного наследования вынуждает к существенно кривым решениям. Но если VCL неплохо держится за счет довольно "крупноблочных" классов, то JDK, в которой попытались сочетать единонаследие с детально проработанной иерархией... вот уж воистину, не стоит вспоминать об этом перед сном. Навскидку один пример - классы JFrame (это нечто типа TForm) и JInternalFrame (это нечто типа TForm.FormStyle = fsMDIChild) ближайшим общим предком имеют не то JComponent, не то Component (аналог сами догадываетесь чего). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 21:58 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA hvladХотелось бы ссылку на стандарт.В сети эти стандарты не выставлены, по причине, если правильно помню, что за них надо платить. В то же время отдельными файлами мелькает, если захотите, то найдете. Начните, например, отсюда ISO/IEC 9075-2:1999 (E) 11.21 <view definition> Syntax Rule ... 9) The viewed table is updatable if and only if the <query expression> is updatable. ... И далее по списку, какие <query expression> бывают updatable, но это уж сами как-нибудь. Даже странно, что, по слухам, разработчику некоей СУБД, надо объяснять то, что худо-бедно, но таки описано в стандарте ANSI-SQL. Интересно, как Вы собираетесь обновлять view с OUTER JOIN, например ? Тем более, если в списке полей view некоторые поля из OUTER отсутствуют. А если вместо полей используются выражения ?А что такое updatable view по-Вашему ? Мне вот почему-то кажется, что это те view, которые могут быть обновлены сервером самостоятельно ? А для обновления тех view, которые не updatable, предназначены триггеры . Так вот, ещё раз повторяю, в MSSQL2K невозможно вставить в колонку view, базирующуюся на NOT NULL поле, NULL-значение. И это есть баг. Так как ограничение NOT NULL должно проверяться при попытке вставки в базовую таблицу, а не во view. И, кстати, updatable тут совершенно не причём - это может быть простой селект из одной таблицы. Привести пример или сами сможете ? :-) Ссылку я просил на указание такого поведения derived колонок view, при котором они обязаны наследовать constraints базовой таблицы. Насчёт вышеупомянутых слухов - их легко проверить ChA hvladПричём тут это ?При том, что в данном случае Вы вырвали фразы из контекста в котором она имела смысл.Я цитировал и цитирую Вас целиком ChA hvladНе нужно притягивать за уши поведение конкретного сервера и объявлять его единственно правильным.Есть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере, при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. В MSSQL2K такой триггер (INSTEAD OF INSERT конечно) просто не вызываетсяПочему-то мне кажется, что это пытаетесь сделать Вы. Я всего лишь попытался описать, почему так происходит в MSSQL. Как раз почему это именно так, боюсь, Вы не знаете ChAЕсли Вы были и его разработчиком, и точно знаете, что все не так, буду только рад услышать больше. Повторюсь, обновляемость view никоим образом не зависит от наличия/отсутствия триггеров, по крайней мере, в стандарте этого не видел, хотя и готов допустить, что был невнимателен. Если вдруг найдете, то буду благодарен, если устраните пробел в моей памяти.Вы неправильно трактуете понятие updatable . Почитайте далее в стандарте как и для чего оно используется. В моей копии стандарта SQL 2002 нет понятия INSTEAD OF триггеров, соответственно не сказано как они влияют на обновляемость вьюх. Но, ещё раз подчёркиваю, обновляемость вьюх не имеет отношения к нашему вопросу. ChA hvladТексты процедур и триггеров, как ни странноЕсть другие, вполне документированные способы, их получить. Вы, вероятно, предпочитаете, недокументрованные, но тогда не надо делать больших глаз. Еще раз повторю, если разработчики MSSQL решили использовать такой способ, то вероятно были определенные резоны для такого решения. Это придумали не в MS. Этот способ ими унаследован ещё от Sybase. И, кажется мне, не от хорошей жизни, а от рализации блобов. Но это другой вопрос ChAМне видится связь с тем, что, статистически, процедур больше 8КБ не так уж много, чтобы непременно использовать для их хранения image/text. Но это всего лишь мое мнение, возможно у них были другие, более веские основания.Вы можете дать гарантию, что строки в syscomments нарезаны по границам слов ? Даже если это и так, то фразу из уже двух слов подряд я там могу не найти. Иногда, знаете ли, хочется найти процедурку в сотне-другой по некоторому критерию. Например syscomments.text like '%insert into mytable%'. ChA hvladнет вопросов, особенно глядя на клиентский утильДопускаю, что Вы не смогли в нем разобраться, но не уверен, что это безусловная проблема их разработчиков. Мне, например, за много лет никаких средств третьих фирм не понадобилось.Я работаю с MSSQL с 98 года, начинал ещё с 6.5, так что я знаю о чём говорю. ChAP.S. hvlad, огромная просьба не входить в раж и обходиться без особого полемического задора. Мы либо пытаемся найти общий язык, либо доказать кто находчивее. Мне кажется, что здесь не КВН. Если Вы считате иначе, и стеб считается аргументом, то позвольте откланяться.Ради бога, я никого не принуждаю. Если мои фразы иногда кажутся излишне эмоциональными или даже обидными - я не имею в виду ничего подобного. Просто я так выражаюсь :) Достаточно мне на это указать, и я приму это к сведению. Я, кстати, не делал заявлений о Вас лично, в отличие от... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 22:40 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA wrote: > больших глаз. Еще раз повторю, если разработчики MSSQL решили > использовать такой способ, то вероятно были определенные резоны для > такого решения. Барин умный - ему виднее... хорошая позиция... > Мне видится связь с тем, что, статистически, процедур > больше 8КБ не так уж много, чтобы непременно использовать для их > хранения image/text. Но это всего лишь мое мнение, возможно у них были > другие, более веские основания. У меня в рабочей базе 584 процы длинее 8000 байт из 17279 штук > hvlad > нет вопросов, особенно глядя на клиентский утиль > > Допускаю, что Вы не смогли в нем разобраться, но не уверен, что это > безусловная проблема их разработчиков. Мне, например, за много лет > никаких средств третьих фирм не понадобилось. а утиль, кстати - не очень, надо сказать... попробуйте нормально сориентироваться среди такого скопища объектов.... поиск по имени, части имени, организация "букетов" процедур.... в MSVID еще хоть как-то, но он зараза - денег стоит отдельных... приходится выкручиваться самописками... и искать по серверным текстам приходится путем получения text из syscomments на клиента, а уж по нему grep-образным способом... ибо, как правильно заметил hvlad - текст режется на куски без учета слов и прочей требухи... зы на всяк случ (типа - "Тулзы не знаешь, научись!" и всё такое) - начинал в 1997 году с 6.5 -> 7.0 -> 2000 -> (plan) 2005 -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 23:09 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
hvladА что такое updatable view по-Вашему ? Мне вот почему-то кажется, что это те view, которые могут быть обновлены сервером самостоятельно ?Слава Богу, наконец-то. hvladА для обновления тех view, которые не updatable, предназначены триггеры .Упс. Это Вы так решили ? Или некоторые из производителей СУБД так решили ? Смотрим SO/IEC 9075-2:1999 (E)11.38 <trigger definition> Function Define triggered SQL-statements. Format <trigger definition> ::= CREATE TRIGGER <trigger name> <trigger action time> <trigger event> ON <table name> [ REFERENCING <old or new values alias list> ] <triggered action><table name> вижу <view name> - нет. Так что поздравляю Вас с новым открытием. hvladТак вот, ещё раз повторяю, в MSSQL2K невозможно вставить в колонку view, базирующуюся на NOT NULL поле, NULL-значение. И это есть баг. Так как ограничение NOT NULL должно проверяться при попытке вставки в базовую таблицу, а не во view. И, кстати, updatable тут совершенно не причём - это может быть простой селект из одной таблицы. Привести пример или сами сможете ? :-) Это было бы багом, если бы такое поведение где-нибудь гарантировалось. А теперь, внимание, пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. hvladНасчёт вышеупомянутых слухов - их легко проверитьНе понял, каких слухов ? hvladЯ цитировал и цитирую Вас целикомУгу, я заметил. hvladКак раз почему это именно так, боюсь, Вы не знаете Не бойтесь, не знаю, только предполагаю. Но если Вы знаете больше, то почему бы не поделиться сакральными знаниями ? hvladВы неправильно трактуете понятие updatable . Почитайте далее в стандарте как и для чего оно используется.Неужели ? Аааа, догадался, наверное потому, что в стандарте нет триггеров на view ? И не надо поминать всуе стандарт 2002 года, мы пока говорим, если правильно понимаю, о MSSQL 2000. В таком случае можно говорить только о стандартах 1999 года, да и то с натяжкой. И кстати, откуда у Вас стандарт 2002 ? Мне, и не только мне , о нем неизвестно. hvladВы можете дать гарантию, что строки в syscomments нарезаны по границам слов ? Даже если это и так, то фразу из уже двух слов подряд я там могу не найти. Иногда, знаете ли, хочется найти процедурку в сотне-другой по некоторому критерию. Например syscomments.text like '%insert into mytable%'.Интересно, почему такую гарантию должен давать я ? Я не дам, и почти уверен, что разрезаны они могут быть как угодно, в том числе и посередине. Никак не могу понять, Вы залезли к кому-то в шкаф и возмущаетесь, что там книги не по алфавиту расставлены ? Это внутренняя кухня MSSQL, которая не предполагала, что Вы захотите туда залезть со своими запросами, ну если уж залезли, то нечего пенять. Кстати, а Вы не пробовали в SQL Query Analyzer нажать F4 ? Думаю в большинстве случаев этого было бы вполне достаточно. hvladЯ работаю с MSSQL с 98 года, начинал ещё с 6.5, так что я знаю о чём говорю.Глубину опыта уже оценил. hvladПросто я так выражаюсь :)Ну да, да, это, конечно, все объясняет и оправдывает. Во что превратится этот форум, если все начнут "просто выражаться", не задумывались ? Думаю, даже форум ПТ, в сравнении, выглядел бы как степенная беседа джентельменов. Давайте будем все-таки пытаться сдерживать себя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:10 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafm авторНе надо пытаться с подходами, используемыми при проектировании на одной СУБД "лезть в огород" другой СУБД, и, увидев, что эти подходы неприменимы, объявлять поведение этой другой СУБД абсолютно неправильным Разумные выводы. Редко встретишь. Особенно в "Сравнение СУБД" :) Глупость ИМХО, как первое так и второе. Не бывает подходов, применимых в одной РСУБД и неприменимых в другой, тогда это не РСУБД вообще. Подходы должны работать везде в РСУБД, а вот техника может отличаться. Это тенденция. Вот например еще заморочка появилась в последнее время, типа версионник и блокировочник, они разные, для них нужно все проектировать по-другому и вообще даже сравнивать нельзя. Блин, бред. РСУБД она и в африке РСУБД, для того и придумана теория, чтобы проектировать БД этого класса одинаково. Согласно теории транзакции должны быть и обладать заданными свойствами, а как они реализованы внутри уже без разницы. Что касается конкретно М$СКЛ сервера, то насколько я понимаю, никто его не объявлял абсолютно неправильным только на основании того, что в нем нет триггера BEFORE, его вообще абсолютно неправильным вроде бы не объявляли. Может я пропустил, приведите ссылку. Или не трындите о том, что в сравнении СУБД мало разумных выводов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:23 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
c127Вот например еще заморочка появилась в последнее время, типа версионник и блокировочник, они разные, для них нужно все проектировать по-другому и вообще даже сравнивать нельзя. Блин, бред. РСУБД она и в африке РСУБД, для того и придумана теория, чтобы проектировать БД этого класса одинаково. Согласно теории транзакции должны быть и обладать заданными свойствами, а как они реализованы внутри уже без разницы. Есть теория. А есть суровые жизненные реалии - несколько производителей РСУБД, каждый из которых старается сделать в своей РСУБД сделать что-то, что привлечет покупателей. И у всех получаются в итоге разные "фичи" (читай - концептуальные отличия в архитектуре). И не приспосабливаться к ним - выйдет боком. Однозначно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:33 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
lockyБарин умный - ему виднее... хорошая позиция...Безусловно, очень конструктивное замечание. Дальше что ? Заставить Microsoft сделать системные таблицы, как мы хотим ? Да они вообще могли закрыть эту информацию, а дать только процедуры для получения текстов. Попробуйте какого-нибудь другого производителя заставить сделать нечто подобное. Безусловно, он, в отличии от MS, радостно кинется вам навстречу и изменит системные вещи так, как нужно именно вам. Я тоже могу выказывать недовольство, тем более поводов хоть отбавляй, но оно неконструктивно. Надо учиться работать на том, что есть, а не искать все время причины, почему не можешь что-то сделать. Если нужна яма и есть лопата, то надо копать, а не кричать, что нет экскаватора, а вот если бы был, то все ямы нипочем. А потом выяснится, что и на экскаваторе надо уметь работать... lockyУ меня в рабочей базе 584 процы длинее 8000 байт из 17279 штук584*100/17279 ~ 3.38%. Статистика, однако... lockyа утиль, кстати - не очень, надо сказать...Не с чем спорить, нет идеального средства для каждого. Не нравится - нет вопросов, ищите и покупайте. Вы бы в Informix версии 7.3х поработали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:35 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Vadim_Maximov c127Вот например еще заморочка появилась в последнее время, типа версионник и блокировочник, они разные, для них нужно все проектировать по-другому и вообще даже сравнивать нельзя. Блин, бред. РСУБД она и в африке РСУБД, для того и придумана теория, чтобы проектировать БД этого класса одинаково. Согласно теории транзакции должны быть и обладать заданными свойствами, а как они реализованы внутри уже без разницы. Есть теория. А есть суровые жизненные реалии - несколько производителей РСУБД, каждый из которых старается сделать в своей РСУБД сделать что-то, что привлечет покупателей. И у всех получаются в итоге разные "фичи" (читай - концептуальные отличия в архитектуре). И не приспосабливаться к ним - выйдет боком. Однозначно... Неаккуратненько получается. Есть дополнительная фича, привлекает покупателей, т.е. удобно пользоваться, но можно обойтись и стандартными вещами. А потом оказывается, что без нее нельзя, иначе "выйдет боком. Однозначно...". Так это уже не фича, это требование и так и нужно говорить: стандарт не поддерживается, используйте вместо него наше нестандартное. Если люди заявляют что они производят РСУБД, и более того их РСУБД соответсвует стандартам, то все должно работать так, как это написано в стандартах и в теории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 01:04 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA hvladНасчёт вышеупомянутых слухов - их легко проверитьНе понял, каких слухов ?Понял. А зачем ? Мне, собственно, все равно. Или Вы считате, что по этой причине аргументы станут весомее ? Для меня только в том случае, если бы Вы относились к разработчикам MS SQL. Мне было бы что Вам сказать и, поверьте, не только комплименты ;) А так, если один человек поучаствовал в написании какой-либо программы, это повод считать его экспертом в данной программе, но совсем необязательно во всех аналогичных программах, существующих на рынке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 01:42 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChAКстати, а Вы не пробовали в SQL Query Analyzer нажать F4 ? Думаю в большинстве случаев этого было бы вполне достаточно.Виноват, давно не пользовал, F8 , кликаем на объект, далее на Dependencies. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 04:58 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
c127РСУБД она и в африке РСУБД, для того и придумана теория, чтобы проектировать БД этого класса одинаково. Согласно теории транзакции должны быть и обладать заданными свойствами, а как они реализованы внутри уже без разницы. Мне кажется, Вы забыли про одну малозначительную деталь. Требования и свойства, выдвигаемые "теорией", регулируют корректность производимых операций, но ничего не говорят о таких вторичных показателях как скорость, количество обслуживаемых пользователей и вероятность успешного завершения транзакции. Заказчика же почему-то эти факторы волнуют куда больше, нежели теорию. c127Если люди заявляют что они производят РСУБД, и более того их РСУБД соответсвует стандартам, то все должно работать так, как это написано в стандартах и в теории. Хм. Насколько я помню предыдущие обсуждения на этом форуме, для наиболее склоняемых РСУБД - Oracle и MSSQL - были найдены и разобраны места их противоречия стандарту ANSI. Подчеркну: не нереализованности фичи итп, а именно противоречия. Полагаю, этого достаточно, чтобы классифицировать высказанное Вами благое пожелание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 07:59 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChAстатистически, процедур больше 8КБ не так уж много Бу га га открылась страшная тайна так вот почему в MS SQL нет пакетов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 08:42 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
hvladНет не улавливаю. Вот если бы в реализации C++ от Борланд не было мн.насл., то я бы тоже объявил это багом. Понимаете, баг называют багом не по вашему желанию, а только в том случаи, если поведение какой-либо системы отличается от документированного. hvladЭто баг. Я не могу использовать VIEW + INSTEAD OF триггер по назначению - скрыть логику от конечного приложения. Опять - 25! Используйте, но выполняйте требования СУБД с которой работаете. Да, нельзя в MS SQL в представление с триггером INSTEAD OF не передавать ничего в поле, которое в базовой таблице NOT NULL: BOLColumns in the view select list can be nullable or not nullable. If a view column does not allow nulls, an INSERT statement must provide values for the column. Вариантов "обхода" - море, например, заведение DEFAULT CONSTRAINT и использования клаузы DEFAULT в инструкции INSERT. Более того, для того, чтобы "скрыть логику от конечного приложения" использование "VIEW + INSTEAD OF" не единственное верное решение. (Об этом чуть позже). hvladЧитаю, просто читаю. Низзя ? Есть другие способы "читания" текстов хп, триггеров и функций, отличных от прямого доступа к системным таблицам с их якобы "кривизной". hvladИз-за убогости поставляемого клиентского утиля, я, вплоть до MSSQL2K, пользовался редактором кода Дельфи для написания процедур. В MSSQL2K хоть синтаксис подсвечивается в Query Analyzer'е :) У меня возникает подозрение, что Вы не пользовались "клиентским утилем" версий до 2К, ибо подсветка синтаксиса была и там. hvladТа написал, написал :) Угу, не этим. А возможностями триггеров, в частности И Вы не один такой, который написали. А на счет возможности триггеров, по-моему, я уже не один раз написал, что "VIEW + INSTEAD OF" не единственное верное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 09:36 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Бу га га открылась страшная тайна так вот почему в MS SQL нет пакетов :) Сейчас все пользователи MS SQL помрут от отчаяния по этому поводу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 09:46 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafm Gluk (Kazan) Бу га га открылась страшная тайна так вот почему в MS SQL нет пакетов :) Сейчас все пользователи MS SQL помрут от отчаяния по этому поводу :) Ну на счет всех не знаю, а мы слегка уже затрахались на портации потрошить пакеты в отдельные процедуры (их получается довольно много, да и логика взаимодействия местами не тривиальна). Собственно моя реплика имела смысл: "Не надо притягивать за уши статистику (к тому же спорную) там где достаточно сказать - так было удобнее разработчикам" Кстати, каков средний размер хранимок на .Net ? авторОпять - 25! Используйте, но выполняйте требования СУБД с которой работаете. Да, нельзя в MS SQL в представление с триггером INSTEAD OF не передавать ничего в поле, которое в базовой таблице NOT NULL: А какой смысл в таких триггерах ? Вы предлагаете решать задачу другими средствами, но есть ли какая-то задача, которую удобно решать этим средством ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 10:13 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Ну на счет всех не знаю, а мы слегка уже затрахались на портации потрошить пакеты в отдельные процедуры (их получается довольно много, да и логика взаимодействия местами не тривиальна). Лучше подходить с другого конца. Раскладывать логику на тривиальные процедуры. В этом и есть задача проектирования. Иначе никаких фич субд может не хватить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 10:31 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) авторОпять - 25! Используйте, но выполняйте требования СУБД с которой работаете. Да, нельзя в MS SQL в представление с триггером INSTEAD OF не передавать ничего в поле, которое в базовой таблице NOT NULL: А какой смысл в таких триггерах ? Вы предлагаете решать задачу другими средствами, но есть ли какая-то задача, которую удобно решать этим средством ? А какой смысл в BEFORE триггерах тогда? INSTEAD OF это практически тоже самое что и BEFORE. Просто NOT NULL проверяется почему-то перед триггером, остальные CONSTRAINTы не проверяются. Обходится, как показано, элементарно, никаких других средств использовать не надо. Странное решение разработчиков конечно, но не баг всё же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 10:56 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafmЛучше подходить с другого конца. Раскладывать логику на тривиальные процедуры. Угу. Мне вспоминается первый серьезный проект, с которым довелось работать - он состоял из нескольких десятков тысяч .c-файлов, в каждом из которых было по одной функции. Причина этого была в том, что линковщик не умел выбирать нужные функции и гнал в exe-шник весь obj-файл целиком; соответственно, при компиляции проекта из кучи exe приходилось либо разбивать таким образом, либо получать в exe кучу неиспользуемого кода. Имя файла, разумеется, совпадало с именем функции, поэтому имена функций были не длиннее восьми символов. Такая вот "задача проектирования". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 10:57 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
softwarerИ это один из недостатков Delphi. Не спорю. Но это не называют "багом" Delphi или "неправильным" поведением. Это AS IS или by design и с эитм приходится работать. softwarerПо моим ощущениям, Вы вскипели несколько зря, особенно если учесть, что мне по этому же поводу, если только не изменяет память, Вы ответили несколько иначе. Я не вижу, чтобы Ваш собеседник "объявлял абсолютно неправильным"; насколько я вижу, он всего лишь сказал, что не стоит объявлять подход, существенно снижающий ценность механизма updateable view, единственно правильным. Я и не "вскипал", а высказал свою точку зрения по поднятому вопросу в различии поведения СУБД. и Вам я ответил, что: pkarklinНе исключаю, такой функционал может быть необходим и его стоит "требовать" реализовать от разрабочиков MS SQL. Но, тем не менее, его отсутствие, никак не делает поведение СУБД "неправильным". На счет "абсолютно" - согласен, собеседник объявил его просто "неправильным", приведя реализацию такого подхода в "правильной СУБД". На счет ценности механизма. Совершенно не согласен с Вами, что "наследование" метаданных базовых таблиц является "существенным" снижением ценности механизма updateable view. Отличия в поведении механизма в разных СУБД есть, но не более того. Варианты "прерывания наследования" или способов его использованя в описанной реализации были приведены. pkarklinИ? by design - это аргумент из серии "это не ошибка, это системная функция". Это ожидаемое поведение! И называть такое поведение ошибкой, даже если оно отличается от поведения аналогичного механизма в другой СУБД, IMHO, не совсем корректно. softwarerСуществует стандартный подход - триггера срабатывают до проверки ограничений. Это позволяет легко и приятно решать многие задачи; скажем, мне было бы любопытно посмотреть на не использующее этого подхода нормальное решение следующей простой задачи: ... Насколько я понимаю, в рассматриваемом случае этот принцип нарушается. Что ж, жаль. Еще один факт в копилку утверждения о том, что подход "все на процедурах" базируется не столько на хорошести процедур, сколько на слабости прочих механизмов в конкретном случае. Странно, однако, требовать от СУБД, не имеющих BEFORE триггеров аналогичности в поведении. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Что в принципе может служить подтверждением Ваши слов о "слабости прочих механизмов в конкретном случае". Т.е. о чем я и говорил, использовать в одной СУБД "механизмы" от другой СУБД не совсем корреткно из-за различия в этих механизмах. Но, повторюсь, говорить о "неправильности" реализации этих механизмов, IMHO, некореектно. Более того, цель, которую я ставлю перед собой при использовании хп - отсутствие в клиентском коде инструкци DML и DDL. Увы и ах, "правильность" реализации механизма "INSTEAD OF (BEFORE) + VIEW" в других СУБД не приводит меня к достижению этой цели, ибо инструкции DML для вьюх (c логикой в триггерах) долны быть именно на клиенте. Если же использовать хп для модификации "INSTEAD OF (BEFORE) + VIEW" - то я не вижу причины, почему бы все не реализовать в хп, включая логику, а не размазывать это на вьюхи, триггера и хп. softwarerХм. То есть предлагаете расслабиться и получать удовольствие? Совершенно верно. Предлагаю каджому получать "удовольстивие" от той СУБД, с которой каждый работает. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:02 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
softwarerсостоял из нескольких десятков тысяч .c-файлов, в каждом из которых было по одной функции. :) Попытался представить, но не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:04 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) авторОпять - 25! Используйте, но выполняйте требования СУБД с которой работаете. Да, нельзя в MS SQL в представление с триггером INSTEAD OF не передавать ничего в поле, которое в базовой таблице NOT NULL: А какой смысл в таких триггерах ? Вы предлагаете решать задачу другими средствами, но есть ли какая-то задача, которую удобно решать этим средством ? Вы не поверите, что кроме описанного в этом топике (и его прородителе) частного случая "INSTEAD OF INSERT на VIEW над таблицей с полем NOT NULL значение которого заполняется в этом самом INSTEAD OF INSERT" есть и другие случаи, примеры которых уже приводил softwarer, а именно INSTEAD OF DELETE на таблицу , для реализации простановки признака "удаленной записи" и многое другое. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:16 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA wrote: > locky > Барин умный - ему виднее... хорошая позиция... > > Безусловно, очень конструктивное замечание. Дальше что ? Заставить > Microsoft сделать системные таблицы, как мы хотим ? Да они вообще могли > закрыть эту информацию, а дать только процедуры для получения текстов. ВОТ И ДАЙТЕ МНЕ ПРОЦЕДУРУ ПОЛУЧЕНИЯ ТЕКСТА!!! Нету? Я так и думал... И не надо мне рассказывать про sp_helptext... ага.. который не учитывает, что длина поля текст уже поменялась, а сам текст процедуры не менялся с 6.5... и на некоторых (не всех, согласен) процедурах текст получается неправильный... особенно если вспомнить, как именно тулзы МС оный текст получают.. прямой выборкой из syscomments.... а лопатой (равно и экскаватором) - в их МС эквиваленте - я таки умею работать. И все траблы решаю. Просто - немножно неаккуратно, что я должен делать ручками то, что по идее должен был получить за денежки, заплаченные за СКЛ. Хотя - задачи решаю, а каким способом - дело десятое. > locky > У меня в рабочей базе 584 процы длинее 8000 байт из 17279 штук > > 584*100/17279 ~ 3.38%. Статистика, однако... Батенька! (простите мою фамильярность!) Как показывает практика, процент глючных проц - еще меньше! И вот когда один маааленький процент пересекается с другим... вот это и начинает волновать... скриптуем всё в файл... ищем в нём фаром... а то, что скриптование через SQL-DMO базы происходит 2 часа - ничо, не напрягает? Подождём, твою маму? И почему моя самописка то-же самое делает за 72 секунды? > locky > а утиль, кстати - не очень, надо сказать... > > Не с чем спорить, нет идеального средства для каждого. Не нравится - нет > вопросов, ищите и покупайте. Вы бы в Informix версии 7.3х поработали... Я УЖЕ купил сервер с набором тулзов.. И, оказывается, я должен заплатить ЕЩЕ денег, чтобы с оным сервером работать? В сад! или пусть вернут деньги за EM и QA. И! А вот не работаю я с информиксом, я с МС СКЛ работаю :-) Нафига мне знать, что кому-то хуже, чем мне. Меня Я, любимый, волную. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:40 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafmПопытался представить, но не получилось. Ну так я как раз о том, что незачем объявлять такой дизайн целью проектирования. Есть естественная мысль разработчиков всех времен - группировка логически связанных атомов, фрагментов программы, в некие удобные в обращении контейнеры. Эволюция реализаций этой идеи в значительной степени определяет эволюцию ЯП вообще - полагаю, достаточно упомянуть, что "объект" есть один из видов такого контейнера. В СУБД средства такой контейнеризации, мягко скажем, небогаты. Если говорить об общесуществующих возможностях - практически только две: префиксы в именах и распихивание по схемам/БД. И когда на этом фоне появляется нормальное решение, aka пакеты - скажу так, я совершенно не уверен, что в моем текущем проекте будет хоть одна "просто хранимка", вне пакета. Потому как неудобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:48 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA hvladА для обновления тех view, которые не updatable, предназначены триггеры .Упс. Это Вы так решили ? Или некоторые из производителей СУБД так решили ? Смотрим SO/IEC 9075-2:1999 (E)11.38 <trigger definition> Function Define triggered SQL-statements. Format <trigger definition> ::= CREATE TRIGGER <trigger name> <trigger action time> <trigger event> ON <table name> [ REFERENCING <old or new values alias list> ] <triggered action><table name> вижу <view name> - нет. Так что поздравляю Вас с новым открытием. В вашей копии стандарта от 1999 года просто нет триггеров на view. Как и в моей от 2002 (ISO/IEC 9075-2:200x(E)). И что ? Ещё раз - при чём тут updatable \ non updatable к нашему вопросу ? И как Вы собираетесь обновлять non updatable view без триггеров ? ChA hvladТак вот, ещё раз повторяю, в MSSQL2K невозможно вставить в колонку view, базирующуюся на NOT NULL поле, NULL-значение. И это есть баг. Так как ограничение NOT NULL должно проверяться при попытке вставки в базовую таблицу, а не во view. И, кстати, updatable тут совершенно не причём - это может быть простой селект из одной таблицы. Привести пример или сами сможете ? :-) Это было бы багом, если бы такое поведение где-нибудь гарантировалось. А что - где-то не гарантируется ? Кроме MSSQL :) Весьма странно проверять ограничения до срабатывания триггеров before, которые могут менять значения полей до вставки в таблицу, не так ли ? ChAА теперь, внимание, пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. А вот то, что я имел в виду: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'id', table 'tempdb.dbo.t'; column does not allow nulls. INSERT fails. The statement has been terminated. Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'id', table 'tempdb.dbo.t'; column does not allow nulls. INSERT fails. The statement has been terminated. Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'id', table 'tempdb.dbo.t'; column does not allow nulls. INSERT fails. The statement has been terminated. Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'id', table 'tempdb.dbo.v_t'; column does not allow nulls. INSERT fails. The statement has been terminated.Как видите - триггер должен вставить not-null значение в таблицу, но его никто не удосужился вызвать. Ай-яй-яй... А вот что написано в BOL на эту тему CREATE TRIGGERINSTEAD OF Specifies that the trigger is executed instead of the triggering SQL statement, thus overriding the actions of the triggering statements.Если бы так и было, то проверка NOT NULL у поля выполнялась бы только при прямом инсерте в таблицу. И, по уму, только после срабатывания INSTEAD OF триггеров. Потому что before-триггеры предназначены для проверки и корректировки вставляемых значений. Если для Вас это не очевидно, то нам не о чем долее говорить ChA hvladКак раз почему это именно так, боюсь, Вы не знаете Не бойтесь, не знаю, только предполагаю. Но если Вы знаете больше, то почему бы не поделиться сакральными знаниями ?Боюсь, за мои предположения, Вы меня или съедите, или заработаете себе язву ChA hvladВы неправильно трактуете понятие updatable . Почитайте далее в стандарте как и для чего оно используется.Неужели ? Аааа, догадался, наверное потому, что в стандарте нет триггеров на view ? И не надо поминать всуе стандарт 2002 года, мы пока говорим, если правильно понимаю, о MSSQL 2000. В таком случае можно говорить только о стандартах 1999 года, да и то с натяжкой. И кстати, откуда у Вас стандарт 2002 ? Мне, и не только мне , о нем неизвестно.Ну, раз Вам ! не известно, то наверное его не существует WG3:DRS-013 H2-2002-358 August, 2002 ... Title: (ISO-ANSI Working Draft) Foundation (SQL/Foundation) Author: Jim Melton (Editor) ... ISO/IEC JTC 1/SC 32 Date: 2002-08-09 ISO/IEC 9075-2:200x(E)Что имею, то и читаю ChA hvladВы можете дать гарантию, что строки в syscomments нарезаны по границам слов ? Даже если это и так, то фразу из уже двух слов подряд я там могу не найти. Иногда, знаете ли, хочется найти процедурку в сотне-другой по некоторому критерию. Например syscomments.text like '%insert into mytable%'.Интересно, почему такую гарантию должен давать я ? Я не дам, и почти уверен, что разрезаны они могут быть как угодно, в том числе и посередине. Никак не могу понять, Вы залезли к кому-то в шкаф и возмущаетесь, что там книги не по алфавиту расставлены ? Я залез к себе в шкаф и хочу там что-то найти. Кривая организация шкафа не позволяет мне это сделать. sysdepends отслеживает зависимости не корректно и там нет тех деталей, которые мне нужны. ChAЭто внутренняя кухня MSSQL, которая не предполагала, что Вы захотите туда залезть со своими запросами, ну если уж залезли, то нечего пенять. Кстати, а Вы не пробовали в SQL Query Analyzer нажать F4 ? Думаю в большинстве случаев этого было бы вполне достаточно.Поздравляю. Вам достаточно плоского списка объектов. Найдите там все insert'ы в данную таблицу, и живите счастливо ChA hvladЯ работаю с MSSQL с 98 года, начинал ещё с 6.5, так что я знаю о чём говорю.Глубину опыта уже оценил.Опять наезд. Я пока воздержусь от комментариев ChA hvladПросто я так выражаюсь :)Ну да, да, это, конечно, все объясняет и оправдывает. Во что превратится этот форум, если все начнут "просто выражаться", не задумывались ? Думаю, даже форум ПТ, в сравнении, выглядел бы как степенная беседа джентельменов. Давайте будем все-таки пытаться сдерживать себя...См выше :) PS И этот человек предлагал мне не входить в раж ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:53 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
lockyа то, что скриптование через SQL-DMO базы происходит 2 часа - ничо, не напрягает? Подождём, твою маму? И почему моя самописка то-же самое делает за 72 секунды? Не пробовали пользоваться утилитой scptxfr.exe из каталога C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 11:58 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklin hvladНет не улавливаю. Вот если бы в реализации C++ от Борланд не было мн.насл., то я бы тоже объявил это багом. Понимаете, баг называют багом не по вашему желанию, а только в том случаи, если поведение какой-либо системы отличается от документированного. hvladЭто баг. Я не могу использовать VIEW + INSTEAD OF триггер по назначению - скрыть логику от конечного приложения. Опять - 25! Используйте, но выполняйте требования СУБД с которой работаете. Да, нельзя в MS SQL в представление с триггером INSTEAD OF не передавать ничего в поле, которое в базовой таблице NOT NULL: BOLColumns in the view select list can be nullable or not nullable. If a view column does not allow nulls, an INSERT statement must provide values for the column. Это всё-таки бага. Если в моём примере выше заменить одно ограничение поля (NOT NULL) на другое (CHECK), то триггеры чудесным образом начинают срабатывать :) Т.е. налицо разная обработка одинаковых, по сути, объектов - ограничений уровня поля. Да, в MSSQL реализация NOT NULL и CHECK (IS NOT NULL) разная, но это не повод так себя вести pkarklinВариантов "обхода" - море, например, заведение DEFAULT CONSTRAINT и использования клаузы DEFAULT в инструкции INSERT. Более того, для того, чтобы "скрыть логику от конечного приложения" использование "VIEW + INSTEAD OF" не единственное верное решение. (Об этом чуть позже).Иногда это практически не возможно, особенно если много связей с базовой таблицей pkarklin hvladЧитаю, просто читаю. Низзя ? Есть другие способы "читания" текстов хп, триггеров и функций, отличных от прямого доступа к системным таблицам с их якобы "кривизной". И что - они позволят мне искать фразу, не вытягивая на клиента весь текст ? pkarklin hvladИз-за убогости поставляемого клиентского утиля, я, вплоть до MSSQL2K, пользовался редактором кода Дельфи для написания процедур. В MSSQL2K хоть синтаксис подсвечивается в Query Analyzer'е :) У меня возникает подозрение, что Вы не пользовались "клиентским утилем" версий до 2К, ибо подсветка синтаксиса была и там.Да, 7-ку мы проскочили. Подсветка синтаксиса - единственная радость в новых QA. В остальном - такое же убожество, как и раньше :) Ср-в анализа исходников (хотя бы поиска объектов) как не было, так и нет. А того, кто придумал редактировать процедуры в маленьком модальном окошке EM, я ваще пристрелил бы. Впрочем, это уже не относится к теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:15 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
iscrafm Лучше подходить с другого конца. Раскладывать логику на тривиальные процедуры. В этом и есть задача проектирования. Иначе никаких фич субд может не хватить. Кролики - не только ценный мех А пакеты далеко не только средство складывания всех процедур в одно место Да и дисциплинируют пакеты больше чем помойка из отдельныз процедур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:20 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklinЭто ожидаемое поведение! И называть такое поведение ошибкой, даже если оно отличается от поведения аналогичного механизма в другой СУБД, IMHO, не совсем корректно. Это был хороший зонтик, просто он воды боялся. Синдром шоколадного чайника, в Oracle тоже встречаются такие фичи (и через некоторое время объявляются устаревшими) инкрементальный экспорт к примеру. Смысл INSTEAD OF именно в определении поведения при добавлении во view (в том числе и автоматическое заполнение NOT NULL полей если потребуется). На другие СУБД смотреть не обязательно (хотя откуда собсна слизали аналитику, версионность и т.п. ?), но со злравым смыслом (пользователя) дружить необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:25 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
2 Cha: Для меня познавательно что работает с CAST(i AS int), однако ДОЛЖНО работать и без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:41 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklinНе спорю. Но это не называют "багом" Delphi или "неправильным" поведением. Насколько я помню ход дискуссии, слова типа "баг" пошли уже после того, как беседа перешла в довольно напряженное русло. Изначально была сказана вполне разумная (имхо) мысль: есть некое неудобство, и выдвинутая категорическая точка зрения "так и надо" не совсем убедительна. pkarklinЭто AS IS или by design и с эитм приходится работать. Приходится. Но если не ошибаюсь, это форум "сравнение СУБД", тема тоже подходящая, и в связи с этим "приходится" вовсе не обязано доставлять радость. pkarklinНа счет "абсолютно" - согласен, собеседник объявил его просто "неправильным", приведя реализацию такого подхода в "правильной СУБД". Хм. Реализацию подхода привел я, причем не говоря слов типа правильно-неправильно, и исключительно в ответ на настойчивую просьбу показать, как это можно сделать иначе. pkarklinНа счет ценности механизма. Совершенно не согласен с Вами, что "наследование" метаданных базовых таблиц является "существенным" снижением ценности механизма updateable view. Хм. Возможно, я не совсем понял приведенный способ обхода, но я так понял, что он требует изменения дизайна базовой таблицы. Что не слишком хорошо с точки зрения общих концепций. pkarklin softwarerИ? by design - это аргумент из серии "это не ошибка, это системная функция". Это ожидаемое поведение! ..... Я в данном случае говорю исключительно о том, что аргумент сам по себе неубедителен в рамках подобной тематики. Нисколько не характеризуя истинность либо ложность защищаемой им точки зрения, корректность участников итп. И называть такое поведение ошибкой, даже если оно отличается от поведения аналогичного механизма в другой СУБД, IMHO, не совсем корректно. pkarklin softwarerскажем, мне было бы любопытно посмотреть на не использующее этого подхода нормальное решение следующей простой задачи: Странно, однако, требовать от СУБД, не имеющих BEFORE триггеров аналогичности в поведении. Этот абзац хорошо показывает, почему я употребил термин "вскипели". Если Вы внимательно прочитаете цитату - сказанное мной - я нигде не "требую", нигде - "аналогичности в поведении", и тем более не прошу показать что-то конкретно на MSSQL. Однако, прочитав мои слова, Вы трактуете их.. весьма жестко, что с моей точки зрения вкупе с другими факторами объясняется тем, что Вы несколько "на взводе". Поясню еще раз: я показал класс задач, для решения которых удобно именно такое взаимодействие триггеров и ограничений (внимание: этот класс шире, нежели связь один к одному; показан всего лишь пример). Я мало верю в возможность хорошего решения этого класса задач другим способом. Соответственно, отсутствие такого инструмента - вынудит искать не очень хорошие решения. pkarklinБолее того, цель, которую я ставлю перед собой при использовании хп - отсутствие в клиентском коде инструкци DML и DDL. Хм. Полагаю, если Вы ставите цель, она чем-то обусловлена. Существует два возможных класса причин: 1. Это дает какие-то объективные преимущества. 2. Объективных преимуществ нет, просто нравится, хочется итп. Я упомянул как раз то, что в конкретном случае MSSQL, рассматриваемый случай является еще одним объективным преимуществом. Что, собственно, является еще одним фактом в пользу моей теории о том, что фразу "все надо делать на процедурах" надо дополнять утверждением "в случае MSSQL". pkarklinто я не вижу причины, почему бы все не реализовать в хп, включая логику, а не размазывать это на вьюхи, триггера и хп. По той же причине, по которой большинство людей в зависимости от ситуации пользуются самолетами, метро, лифтами и велосипедами, не пытаясь ограничиться эксплуатацией автомобиля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:46 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > locky > а то, что скриптование через SQL-DMO базы происходит 2 часа - ничо, не > напрягает? Подождём, твою маму? И почему моя самописка то-же самое > делает за 72 секунды? > > Не пробовали пользоваться утилитой scptxfr.exe из каталога C:\Program > Files\Microsoft SQL Server\MSSQL\Upgrade? ;) Пробовал :-( Медленно... за 26 минут скрипт таки не получен - дольше ждать религия не позволила :-) Да и входит тулза не комплект клиентских, а токмо на серваке - неудобно... а самопалом ~ 2 минуты (включая дамп настроечных справочников - их таки порядочно :-( ) так-шта.... всё-таки чо-то в МС недодумали.... -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:55 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
softwarerХм. Реализацию подхода привел я, причем не говоря слов типа правильно-неправильно, и исключительно в ответ на настойчивую просьбу показать, как это можно сделать иначе. Эээ... А я и отвечал не на Вашу реализацию подхода, а на следующее высказывание: hvladЕсть таблица с NOT NULL полем. Есть VIEW на неё. В MSSQL2K нет способа вставить в это VIEW (не таблицу!) поле NOT NULL. В нормальном сервере , при необходимости, пишется триггер BEFORE INSERT на это VIEW (или таблицу), в котором значение поля меняется на допустимое. softwarerХм. Возможно, я не совсем понял приведенный способ обхода, но я так понял, что он требует изменения дизайна базовой таблицы. Что не слишком хорошо с точки зрения общих концепций. Всего-навсего временной отключение проверки ограничений. softwarerЕсли Вы внимательно прочитаете цитату - сказанное мной - я нигде не "требую", нигде - "аналогичности в поведении", и тем более не прошу показать что-то конкретно на MSSQL. Однако, прочитав мои слова, Вы трактуете их.. весьма жестко, что с моей точки зрения вкупе с другими факторами объясняется тем, что Вы несколько "на взводе". Ок. Вы не требуете. Согласен. НА счет не просите, гм... как тогда прикажете трактовать следующее: softwarerскажем, мне было бы любопытно посмотреть на не использующее этого подхода нормальное решение следующей простой задачи :) Интересно, если бы я привел скрипт на T-SQL и в диалоге с Вами сказал, что мне было бы "любопытно посмотреть..." Вы бы удержались от приведения кода для Oracle? Так что никакой жесткости в трактовании Ваших слов у меня даже и в мыслях не было. ;) softwarerПоясню еще раз: я показал класс задач, для решения которых удобно именно такое взаимодействие триггеров и ограничений (внимание: этот класс шире, нежели связь один к одному; показан всего лишь пример). Я мало верю в возможность хорошего решения этого класса задач другим способом. Соответственно, отсутствие такого инструмента - вынудит искать не очень хорошие решения. Согласен. softwarerХм. Полагаю, если Вы ставите цель, она чем-то обусловлена. Существует два возможных класса причин: 1. Это дает какие-то объективные преимущества. 2. Объективных преимуществ нет, просто нравится, хочется итп. Для меня она обусловлена п.1. А о преимуществах (видимых мною) отсутствия в клиентском приложении DML и DLL я уже неоднократно писАл. softwarerЯ упомянул как раз то, что в конкретном случае MSSQL, рассматриваемый случай является еще одним объективным преимуществом. Что, собственно, является еще одним фактом в пользу моей теории о том, что фразу "все надо делать на процедурах" надо дополнять утверждением "в случае MSSQL". Думаю не стоит возвращаться еще раз к обсуждению +\- "все надо делать на процедурах". Копий было сломано немало и у каждого все равно останеться своя теория. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 13:16 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
pkarklinЭээ... А я и отвечал не на Вашу реализацию подхода, а на следующее высказывание: И как Вы можете заметить, в нем не говорится ни о "багах", ни о "правильных/неправильных"... О чем я и говорю - Вы воспринимаете сказанное существенно измененным по сравнению с оригиналом. pkarklin softwarerХм. Возможно, я не совсем понял приведенный способ обхода, но я так понял, что он требует изменения дизайна базовой таблицы. Что не слишком хорошо с точки зрения общих концепций. Всего-навсего временной отключение проверки ограничений. Отключали Вы в том фрагменте кода, который привели мне. Если я правильно помню, в MSSQL DDL-операции не вызывают коммита и следовательно отключение будет в пределах сессии, так что способ в целом приемлимый. Я же, однако, говорил о способе обхода проблемы со вставкой во view. Не очень четко помню тот фрагмент, но там вроде бы говорилось о замене NOT NULL на другой тип constraint-а. pkarklin softwarerи тем более не прошу показать что-то конкретно на MSSQL. Ок. Вы не требуете. Согласен. НА счет не просите, гм... как тогда прикажете трактовать следующее: softwarerскажем, мне было бы любопытно посмотреть на не использующее этого подхода нормальное решение следующей простой задачи :) Интересно, если бы я привел скрипт на T-SQL и в диалоге с Вами сказал, что мне было бы "любопытно посмотреть..." Вы бы удержались от приведения кода для Oracle? OK, прежде всего отвечаю на вопрос "как трактовать". Как констатацию того факта, что я сомневаюсь в существовании хорошего решения, не использующего этого подхода, был бы несколько удивлен и несколько обрадован, если бы такое увидел, однако не хочу прямо утверждать "нельзя". Далее, насчет удержался и жесткости. Прямой и тупой ответ - "зависит от ситуации". Например, в какой-то ситуации я бы ответил, что не попадал в такие ситуации, не могу сконструировать примера, в котором этот подход будет хорошим решением и соответственно не вижу смысла обдумывать решение такой задачи. Интересно, однако, другое. Интересно то, что в контексте, в котором я максимально убрал противопоставление конкретных БД, оставив сугубо абстрактную задачу в рамках подходов, Вы, судя по формулировке ответа, таки углядели священную войну Oracle - MSSQL. Признаться, не очень понимаю - неужели мне требовалось написать этот пример, скажем, на Interbase, чтобы таки быть понятым буквально? Или все равно не помогло бы? pkarklinТак что никакой жесткости в трактовании Ваших слов у меня даже и в мыслях не было. ;) Хм. Вот как раз в этом я нискольку не сомневаюсь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:39 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
hvladИ как Вы собираетесь обновлять non updatable view без триггеров ?Как правило, не испытываю в этом нужды. В случае острой необходимости, воспользуюсь INSTEAD-триггером. hvladА что - где-то не гарантируется ? Кроме MSSQL :) Весьма странно проверять ограничения до срабатывания триггеров before, которые могут менять значения полей до вставки в таблицу, не так ли ?"Если бы у бабушки были ...", дальше, уверен, сами знаете. hvladА вот то, что я имел в виду:Да, понятно, что Вы имели в виду, приведенный мною пример как раз и давал желаемое поведение, но он оказался hvladАбсолютно не в тему.Был более чем уверен, что ответ последует именно в таком духе. hvladЕсли бы так и было, то проверка NOT NULL у поля выполнялась бы только при прямом инсерте в таблицу. И, по уму, только после срабатывания INSTEAD OF триггеров. Потому что before-триггеры предназначены для проверки и корректировки вставляемых значений. Если для Вас это не очевидно, то нам не о чем долее говоритьINSTEAD-триггер != BEFORE-триггер. Вторых у MSSQL просто не существует, соответственно, ждать от INSTEAD такого же поведение, как от BEFORE, несколько самонадеянно. Ваше право считать "багом", что MSSQL делает "неправомерную" проверку на допустимость NULL-значений до "реальной" модификации данных, мое право - не согласиться. hvlad WG3:DRS-013 H2-2002-358 August, 2002 ... Title: (ISO-ANSI Working Draft) Foundation (SQL/Foundation) Author: Jim Melton (Editor) ... ISO/IEC JTC 1/SC 32 Date: 2002-08-09 ISO/IEC 9075-2:200x(E)ОК, вопрос закрыт, Working Draft . hvladЯ залез к себе в шкаф и хочу там что-то найти. Кривая организация шкафа не позволяет мне это сделать. sysdepends отслеживает зависимости не корректно и там нет тех деталей, которые мне нужны.Пользуйтесь только "правильными" шкафами. Честное слово, не понимаю, зачем Вы себя так мучаете, с 1998 года, ведь есть же другие, более "правильные" СУБД. lockyВОТ И ДАЙТЕ МНЕ ПРОЦЕДУРУ ПОЛУЧЕНИЯ ТЕКСТА!!!:) В Microsoft обращаться не пробовали ? Вы полагаете, что в других СУБД все отлично и нет ни одного повода для претензий ? Вы, правда, думаете, что если выскажете свое недовольство здесь, да еще и, почему-то, мне, то что-то изменится ? lockyИ почему моя самописка то-же самое делает за 72 секунды?Замечательно, пользуйтесь ей ;) Можете попробовать продать. lockyЯ УЖЕ купил сервер с набором тулзов.. И, оказывается, я должен заплатить ЕЩЕ денег, чтобы с оным сервером работать? В сад! или пусть вернут деньги за EM и QA.Неа, Вы хотите большего, чем Вам предлагают ;) Как Вы думаете, какая % имеют EM и QA в общей стоимости ? Что-то мне подсказывает, что Вы немного таким образом сэкономите. А с другой стороны, почему бы и нет ? Подаете в суд на MS, выигрываете дело, и Вы миллионер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:47 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
softwarerЯ же, однако, говорил о способе обхода проблемы со вставкой во view. Не очень четко помню тот фрагмент, но там вроде бы говорилось о замене NOT NULL на другой тип constraint-а. Да, на CHECK. Вот пример кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. softwarerИнтересно то, что в контексте, в котором я максимально убрал противопоставление конкретных БД, оставив сугубо абстрактную задачу в рамках подходов, Вы, судя по формулировке ответа, таки углядели священную войну Oracle - MSSQL. Признаться, не очень понимаю - неужели мне требовалось написать этот пример, скажем, на Interbase, чтобы таки быть понятым буквально? Или все равно не помогло бы? Зря Вы пытаетесь найти в моих высказываниях "священную войну". :( Я ее никогда не вел и вести не собираюсь. Я никогда не высказывался о какой-либо другой СУБД, противопоставляя ей MS SQL в стиле "а вот в нормальных СУБД...", тем самым указывая на ее ненормальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 16:23 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChAВаше право считать "багом", что MSSQL делает "неправомерную" проверку на допустимость NULL-значений до "реальной" модификации данных, мое право - не согласитьсяМне дали право ! Ура ! Спасибо ! На этом пожалуй и закончим, утомили Вы меня пустыми разговорами... ChAОК, вопрос закрыт, Working Draft Да, да - со специально внесёнными неточностями, дабы было что исправлять к 2003-му году Смешно, право ChAПользуйтесь только "правильными" шкафами. Честное слово, не понимаю, зачем Вы себя так мучаете, с 1998 года, ведь есть же другие, более "правильные" СУБДДык - пользуюсь, верите ? :) Просто есть такое понятие - работа. И определяется она не только хочу\не хочу, MS\не MS, но и другими хар-ками, как ни странно. И не нужно давать мне рекомендаций о том кем и с чем раболтать - я уж как-нибудь разберусь. А насчёт мучений - в MSSQL есть гораздо более серьёзные, скажем мягко, странности, но они есть везде. И накидываться на всякого, кто указывает на эти недостатки (и баги :), с пеной у рта всё отрицая, как будто бы от этого зависит Ваш оклад, мягко говоря, не умно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 18:33 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
hvladПоздравляю, безусловная победа эмоций над разумом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 19:09 |
|
||
|
Было: простите, накипело
|
|||
|---|---|---|---|
|
#18+
ChA wrote: > locky > И почему моя самописка то-же самое > делает за 72 секунды? > > Замечательно, пользуйтесь ей ;) Можете попробовать продать. Дык ею и пользуюсь, однако... А продавать - смысл продавать (да и кто купит?) прогу из 30 строчек кода? Вот Вы - купите? отдам даром, за символический 1 бакс (токо металлический - подарю чилду). > locky > Я УЖЕ купил сервер с набором тулзов.. И, оказывается, я должен заплатить > ЕЩЕ денег, чтобы с оным сервером работать? В сад! или пусть вернут > деньги за EM и QA. > > Неа, Вы хотите большего, чем Вам предлагают ;) Как Вы думаете, какая % > имеют EM и QA в общей стоимости ? Что-то мне подсказывает, что Вы > немного таким образом сэкономите. А с другой стороны, почему бы и нет ? > Подаете в суд на MS, выигрываете дело, и Вы миллионер... Да, сэкономлю я немного... это факт... И дело в суд - это так, ПТ... Просто несколько выводит из себя неадекватное поведение заявленного функционала (см. sp_helptext) и, скажем так, некоторая непродуманность клиентских тулзов. а по поводу "других СУБД" - это их прооблемы, я работаю с МС СКЛ, и, думаю, имею право возмущаться :-) на все заплаченные деньги. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 21:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553549]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 178ms |
| total: | 328ms |

| 0 / 0 |
