|
|
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
С той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт использовали префикс @ вместо двоеточия? Ответы типа "потому-что" и "не задавайте риторических вопросов" прошу не давать - кому не интересно, может просто пропустить этот топик :) И еще вопрос: как вы относитесь к этой особенности диалекта? Также можно высказаться по поводу версионности значений: использование квазитаблиц INSERTED и DELETED вместо ANSI'вских colname . NEW и colname . OLD , хотя причины всем известны - ну неужели за столько времени нельзя это победить хотя бы на уровне синтаксиса :) Сам сиквел мне нравится, но по-первости это напрягало, да и сейчас схождение со стандартом в базовых понятиях ИМХО не помешало бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2007, 13:56 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
автор@ вместо двоеточия Думаю что или они это сделали до появления стандарта и потому можно сказать что так исторически сложилось, или они хотели всем явно показать как они имели все эти стандарты... авторИ еще вопрос: как вы относитесь к этой особенности диалекта? Я отрицательно. Мне нравится когда у всех одинаково. авторТакже можно высказаться по поводу версионности значений: использование квазитаблиц INSERTED и DELETED вместо ANSI'вских colname.NEW и colname.OLD, хотя причины всем известны - ну неужели за столько времени нельзя это победить хотя бы на уровне синтаксиса :) Это вобще обнять и плакать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2007, 16:22 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2manС той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт Эти вопросы следует задавать не в Microsoft, а в Sybase так как уши такого синтаксиса от них растут. Вполне возможно, что там это появилось до появления в стандарте, т.к. Sybase очень давно ASE делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2007, 18:19 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
а это действительно есть в стандарте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2007, 22:38 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2man wrote: > Также можно высказаться по поводу версионности значений: использование > квазитаблиц *INSERTED* и *DELETED* вместо ANSI'вских /colname/.*NEW* и > /colname/.*OLD*, хотя причины всем известны - ну неужели за столько > времени нельзя это победить хотя бы на уровне синтаксиса :) Мне причины неизвестны. Пделитесь, плиз. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 18:32 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
SergSuperа это действительно есть в стандарте?Сильно сомневаюсь, что автор топика его видел, иначе он бы знал, что в ANSI-стандарте statement-level и row-level триггера, рассматриваются, в целом, как абсолютно равноправные концепции. Возможно, лучшим вариантом было бы присутствие обоих вариантов, но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. В результате получили очередной повод для holly war. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 19:20 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. Oracle вроде как удалось, или я вас не понял ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 08:45 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
ChA SergSuperа это действительно есть в стандарте?Сильно сомневаюсь, что автор топика его видел, иначе он бы знал, что в ANSI-стандарте statement-level и row-level триггера, рассматриваются, в целом, как абсолютно равноправные концепции. Возможно, лучшим вариантом было бы присутствие обоих вариантов, но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. В результате получили очередной повод для holly war. Скорее уважаемый ChA его (REFERENSING в триггерах из SQL-2003) не видел, ибо тогда он бы знал, что ежа и ужа (ROW & TABLE level) скрестили, например DB2. Речь о другом - зачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандарта ... REFERENSING OLD TABLE AS Deleted NEW TABLE AS Inserted ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:36 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2manИ еще вопрос: как вы относитесь к этой особенности диалекта? Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:37 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. Oracle вроде как удалось, или я вас не понял ? Oracle юзает ROW подход, но позволяет переименовывать стандартнве имена OLd и NEW на другие (см.выше) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:38 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
Владимир П. 2manИ еще вопрос: как вы относитесь к этой особенности диалекта? Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов. но сиквел не запрещает использовать кавычки "my Crazy namE" вместо квадратных скобок, хотя рекомендует предпочитать скобки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:41 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
Владимир П. 2manИ еще вопрос: как вы относитесь к этой особенности диалекта? Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов. Мдя... Звучит примерно так "Обращение к членам класса в Object Pascal (Delphi language) через точку" - это уродство, по сравнению с "->" в С++. На счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:58 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2man Gluk (Kazan) ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. Oracle вроде как удалось, или я вас не понял ? Oracle юзает ROW подход, но позволяет переименовывать стандартнве имена OLd и NEW на другие (см.выше) Что есть ROW-подход ? У Oracle есть вполне себе операторные триггеры, естественно из них нельзя обращаться к строкам. Об этом речь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 11:06 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2man ChA SergSuperа это действительно есть в стандарте?Сильно сомневаюсь, что автор топика его видел, иначе он бы знал, что в ANSI-стандарте statement-level и row-level триггера, рассматриваются, в целом, как абсолютно равноправные концепции. Возможно, лучшим вариантом было бы присутствие обоих вариантов, но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. В результате получили очередной повод для holly war. Скорее уважаемый ChA его (REFERENSING в триггерах из SQL-2003) не видел, ибо тогда он бы знал, что ежа и ужа (ROW & TABLE level) скрестили, например DB2. Речь о другом - зачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандарта ... REFERENSING OLD TABLE AS Deleted NEW TABLE AS Inserted ... ? Deleted и Inserted еще SyBase придумала. Да и какая разница как оно называется? (если конечно этого в стандарте нету, а этого, я так понял, нету) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 11:26 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Oracle вроде как удалось, или я вас не понял ?Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ? 2manзачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандартаНаверное затем, что в стандарте, на момент появления такого подхода, не было никаких упоминаний о возможности произвольного изменения имени таких таблиц. Кстати, даже не уверен, что в стандартах тех лет в принципе упоминались процедурные расширения. Безусловно, возможность переименования таковых можно было бы добавить, если бы это имело хоть какой-нибудь смысл. Лично у меня за все время работы с MSSQL ни разу не возникло этой потребности, поэтому не понимаю, что потерял. В то же время в бытность работы с Informix, где были только row-level триггера и возможность менять префиксы new и old на другие, я так и не удосужился ни разу поменять их на какие-либо другие. И, что характерно, надобности не возникало. Что я делал не так ? Или лучше так, как часто и по какой причине Вам приходилось пользоваться этой возможностью ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 11:40 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
ChA Gluk (Kazan)Oracle вроде как удалось, или я вас не понял ?Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ? 2manзачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандартаНаверное затем, что в стандарте, на момент появления такого подхода, не было никаких упоминаний о возможности произвольного изменения имени таких таблиц. Кстати, даже не уверен, что в стандартах тех лет в принципе упоминались процедурные расширения. Безусловно, возможность переименования таковых можно было бы добавить, если бы это имело хоть какой-нибудь смысл. Лично у меня за все время работы с MSSQL ни разу не возникло этой потребности, поэтому не понимаю, что потерял. В то же время в бытность работы с Informix, где были только row-level триггера и возможность менять префиксы new и old на другие, я так и не удосужился ни разу поменять их на какие-либо другие. И, что характерно, надобности не возникало. Что я делал не так ? Или лучше так, как часто и по какой причине Вам приходилось пользоваться этой возможностью ? Честно? 1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичней :) 2. B еще короткие, т.к. "в лом" писать 8 символов вместо 3-х. И потому часто в запроса у меня встречается Inserted AS NEW , хотя можно и AS I , но это как-то некрасиво... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:02 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
ChA Gluk (Kazan)Oracle вроде как удалось, или я вас не понял ?Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ? Как я уже сказал нет. В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:15 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
2man 1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичней :) 2. B еще короткие, т.к. "в лом" писать 8 символов вместо 3-х. И потому часто в запроса у меня встречается Inserted AS NEW , хотя можно и AS I , но это как-то некрасиво... Гм... понятные... Или все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:45 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеровНе вопрос. Практически всегда можно решить одну и ту же задачу теми средствами, которые присущи данной СУБД. Просто 2man был несколько невнятен в своем первом топике, что и вызвало легкий флейм. 2manЧестно? 1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичнейДа, пожалуй, но так уж сложилось исторически. В конце концов, как упоминалось выше, если уж хотите предьявить претензии, так это фирме Sybase, а не вешать всех собак на MS. Для этого, IMHO, хватает куда более веских причин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:48 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
pkarklinИли все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:53 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
ChA pkarklinИли все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду. Да нет, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 12:57 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
pkarklin Владимир П.Но еще большее уродство -- квадратные скобки у идентификаторов. Звучит примерно так "Обращение к членам класса в Object Pascal (Delphi language) через точку" - это уродство, по сравнению с "->" в С++. Согласен! pkarklinЧто тут уродского - чеснслово - непонятно. %) 1. Кавычки не сливаются с именем, в отличие от квадратных скобок -- у которых штрихи так же вертикальны, как и у букв, и которые к буквам близко расположены. Читать труднее намного. 2. Непривычно. 3. У всех так, а у MS, как обычно, всё по-своему и против стандарта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:23 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
если использовать только допустимые идентификаторы, то никаких квадратных скобок не будет. К этому надо стремиться, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:55 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
pkarklinНа счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %) Позволю себе комментарий "со стороны". Необходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия. Лично я не применяю кавычек и, если вдруг получу в свое распоряжение скобки, вряд ли буду применять их. Именно потому, что считаю подход "особых идентификаторов"... неоправданным 1 . Разумеется, "можно писать нормально" - вполне достаточный аргумент, чтобы не считать претензию в "уродстве" серьезным объективным недостатком. С другой стороны, попытка сделать уродскую ситуацию несколько менее уродской, в конечном итоге - стимулировать практику, от которой следует отказаться.... с моей точки зрения, определенно не является плюсом. 1 Правда, у него таки есть один плюс, от которого просто так не отмахнешься - возможность в гетерогенных запросах обращаться к СУБД с отличающимся пониманием "стандартных требований" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 18:05 |
|
||
|
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
|
|||
|---|---|---|---|
|
#18+
softwarerНеобходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия. Да, Вы правы. Утилиты по рисованию запросов мышкой от MS SQL добавляют их куда не поподя. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 18:08 |
|
||
|
|

start [/forum/topic.php?fid=35&fpage=30&tid=1553344]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 406ms |

| 0 / 0 |
