Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
2man
Member

Откуда:
Сообщений: 23
С той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт использовали префикс @ вместо двоеточия? Ответы типа "потому-что" и "не задавайте риторических вопросов" прошу не давать - кому не интересно, может просто пропустить этот топик :)
И еще вопрос: как вы относитесь к этой особенности диалекта?

Также можно высказаться по поводу версионности значений: использование квазитаблиц INSERTED и DELETED вместо ANSI'вских colname.NEW и colname.OLD, хотя причины всем известны - ну неужели за столько времени нельзя это победить хотя бы на уровне синтаксиса :)

Сам сиквел мне нравится, но по-первости это напрягало, да и сейчас схождение со стандартом в базовых понятиях ИМХО не помешало бы
18 мар 07, 13:56    [3911972]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
автор
@ вместо двоеточия


Думаю что или они это сделали до появления стандарта и потому можно сказать что так исторически сложилось, или они хотели всем явно показать как они имели все эти стандарты...

автор
И еще вопрос: как вы относитесь к этой особенности диалекта?


Я отрицательно. Мне нравится когда у всех одинаково.

автор
Также можно высказаться по поводу версионности значений: использование квазитаблиц INSERTED и DELETED вместо ANSI'вских colname.NEW и colname.OLD, хотя причины всем известны - ну неужели за столько времени нельзя это победить хотя бы на уровне синтаксиса :)


Это вобще обнять и плакать...
18 мар 07, 16:22    [3912108]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3155
2man
С той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт

Эти вопросы следует задавать не в Microsoft, а в Sybase так как уши такого синтаксиса от них растут. Вполне возможно, что там это появилось до появления в стандарте, т.к. Sybase очень давно ASE делает.
18 мар 07, 18:19    [3912232]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
а это действительно есть в стандарте?
18 мар 07, 22:38    [3912629]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

2man wrote:
> Также можно высказаться по поводу версионности значений: использование
> квазитаблиц *INSERTED* и *DELETED* вместо ANSI'вских /colname/.*NEW* и
> /colname/.*OLD*, хотя причины всем известны - ну неужели за столько
> времени нельзя это победить хотя бы на уровне синтаксиса :)

Мне причины неизвестны. Пделитесь, плиз.

Posted via ActualForum NNTP Server 1.4

19 мар 07, 18:32    [3916424]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11373
SergSuper
а это действительно есть в стандарте?
Сильно сомневаюсь, что автор топика его видел, иначе он бы знал, что в ANSI-стандарте statement-level и row-level триггера, рассматриваются, в целом, как абсолютно равноправные концепции. Возможно, лучшим вариантом было бы присутствие обоих вариантов, но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. В результате получили очередной повод для holly war.
19 мар 07, 19:20    [3916634]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ChA
но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.


Oracle вроде как удалось, или я вас не понял ?
20 мар 07, 08:45    [3917394]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
2man
Member

Откуда:
Сообщений: 23
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 мар 07, 10:36    [3917901]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Владимир П.
Member

Откуда: Екатеринбург
Сообщений: 443
2man
И еще вопрос: как вы относитесь к этой особенности диалекта?

Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов.
20 мар 07, 10:37    [3917905]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
2man
Member

Откуда:
Сообщений: 23
Gluk (Kazan)
ChA
но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.


Oracle вроде как удалось, или я вас не понял ?


Oracle юзает ROW подход, но позволяет переименовывать стандартнве имена OLd и NEW на другие (см.выше)
20 мар 07, 10:38    [3917919]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
2man
Member

Откуда:
Сообщений: 23
Владимир П.
2man
И еще вопрос: как вы относитесь к этой особенности диалекта?

Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов.

но сиквел не запрещает использовать кавычки "my Crazy namE" вместо квадратных скобок, хотя рекомендует предпочитать скобки :)
20 мар 07, 10:41    [3917942]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Владимир П.
2man
И еще вопрос: как вы относитесь к этой особенности диалекта?

Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов.


Мдя... Звучит примерно так "Обращение к членам класса в Object Pascal (Delphi language) через точку" - это уродство, по сравнению с "->" в С++.

На счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %)
20 мар 07, 10:58    [3918057]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
2man
Gluk (Kazan)
ChA
но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.


Oracle вроде как удалось, или я вас не понял ?


Oracle юзает ROW подход, но позволяет переименовывать стандартнве имена OLd и NEW на другие (см.выше)


Что есть ROW-подход ? У Oracle есть вполне себе операторные триггеры, естественно из них нельзя обращаться к строкам. Об этом речь ?
20 мар 07, 11:06    [3918103]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
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 мар 07, 11:26    [3918213]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11373
Gluk (Kazan)
Oracle вроде как удалось, или я вас не понял ?
Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ?
2man
зачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандарта
Наверное затем, что в стандарте, на момент появления такого подхода, не было никаких упоминаний о возможности произвольного изменения имени таких таблиц. Кстати, даже не уверен, что в стандартах тех лет в принципе упоминались процедурные расширения.
Безусловно, возможность переименования таковых можно было бы добавить, если бы это имело хоть какой-нибудь смысл. Лично у меня за все время работы с MSSQL ни разу не возникло этой потребности, поэтому не понимаю, что потерял. В то же время в бытность работы с Informix, где были только row-level триггера и возможность менять префиксы new и old на другие, я так и не удосужился ни разу поменять их на какие-либо другие. И, что характерно, надобности не возникало. Что я делал не так ? Или лучше так, как часто и по какой причине Вам приходилось пользоваться этой возможностью ?
20 мар 07, 11:40    [3918285]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
2man
Member

Откуда:
Сообщений: 23
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 мар 07, 12:02    [3918421]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ChA
Gluk (Kazan)
Oracle вроде как удалось, или я вас не понял ?
Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ?


Как я уже сказал нет. В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеров
20 мар 07, 12:15    [3918502]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
2man

1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичней :)
2. B еще короткие, т.к. "в лом" писать 8 символов вместо 3-х. И потому часто в запроса у меня встречается Inserted AS NEW, хотя можно и AS I, но это как-то некрасиво...


Гм... понятные... Или все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.
20 мар 07, 12:45    [3918724]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11373
Gluk (Kazan)
В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеров
Не вопрос. Практически всегда можно решить одну и ту же задачу теми средствами, которые присущи данной СУБД. Просто 2man был несколько невнятен в своем первом топике, что и вызвало легкий флейм.
2man
Честно?
1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичней
Да, пожалуй, но так уж сложилось исторически. В конце концов, как упоминалось выше, если уж хотите предьявить претензии, так это фирме Sybase, а не вешать всех собак на MS. Для этого, IMHO, хватает куда более веских причин.
20 мар 07, 12:48    [3918752]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11373
pkarklin
Или все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.
Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду.
20 мар 07, 12:53    [3918787]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ChA
pkarklin
Или все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.
Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду.


Да нет, конечно же.
20 мар 07, 12:57    [3918820]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
Владимир П.
Member

Откуда: Екатеринбург
Сообщений: 443
pkarklin
Владимир П.
Но еще большее уродство -- квадратные скобки у идентификаторов.


Звучит примерно так "Обращение к членам класса в Object Pascal (Delphi language) через точку" - это уродство, по сравнению с "->" в С++.

Согласен!

pkarklin
Что тут уродского - чеснслово - непонятно. %)

1. Кавычки не сливаются с именем, в отличие от квадратных скобок -- у которых штрихи так же вертикальны, как и у букв, и которые к буквам близко расположены. Читать труднее намного.
2. Непривычно.
3. У всех так, а у MS, как обычно, всё по-своему и против стандарта.
20 мар 07, 17:23    [3920835]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
если использовать только допустимые идентификаторы, то никаких квадратных скобок не будет. К этому надо стремиться, IMHO.
20 мар 07, 17:55    [3921083]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67376
Блог
pkarklin
На счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %)

Позволю себе комментарий "со стороны". Необходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия.

Лично я не применяю кавычек и, если вдруг получу в свое распоряжение скобки, вряд ли буду применять их. Именно потому, что считаю подход "особых идентификаторов"... неоправданным1. Разумеется, "можно писать нормально" - вполне достаточный аргумент, чтобы не считать претензию в "уродстве" серьезным объективным недостатком. С другой стороны, попытка сделать уродскую ситуацию несколько менее уродской, в конечном итоге - стимулировать практику, от которой следует отказаться.... с моей точки зрения, определенно не является плюсом.

1 Правда, у него таки есть один плюс, от которого просто так не отмахнешься - возможность в гетерогенных запросах обращаться к СУБД с отличающимся пониманием "стандартных требований"
20 мар 07, 18:05    [3921157]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
softwarer
Необходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия.


Да, Вы правы. Утилиты по рисованию запросов мышкой от MS SQL добавляют их куда не поподя. :)
20 мар 07, 18:08    [3921174]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить