powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
28 сообщений из 28, показаны все 2 страниц
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34398544
2man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт использовали префикс @ вместо двоеточия? Ответы типа "потому-что" и "не задавайте риторических вопросов" прошу не давать - кому не интересно, может просто пропустить этот топик :)
И еще вопрос: как вы относитесь к этой особенности диалекта?

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

Сам сиквел мне нравится, но по-первости это напрягало, да и сейчас схождение со стандартом в базовых понятиях ИМХО не помешало бы
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34398635
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор@ вместо двоеточия

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

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

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

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

Это вобще обнять и плакать...
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34398719
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2manС той самой поры, как познакомился с MS SQL (а случилось это очень давно), мучает вопрос: а почему для имен переменных и параметров в Мелкософт
Эти вопросы следует задавать не в Microsoft, а в Sybase так как уши такого синтаксиса от них растут. Вполне возможно, что там это появилось до появления в стандарте, т.к. Sybase очень давно ASE делает.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34398946
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это действительно есть в стандарте?
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34401095
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2man wrote:
> Также можно высказаться по поводу версионности значений: использование
> квазитаблиц *INSERTED* и *DELETED* вместо ANSI'вских /colname/.*NEW* и
> /colname/.*OLD*, хотя причины всем известны - ну неужели за столько
> времени нельзя это победить хотя бы на уровне синтаксиса :)

Мне причины неизвестны. Пделитесь, плиз.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34401226
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperа это действительно есть в стандарте?Сильно сомневаюсь, что автор топика его видел, иначе он бы знал, что в ANSI-стандарте statement-level и row-level триггера, рассматриваются, в целом, как абсолютно равноправные концепции. Возможно, лучшим вариантом было бы присутствие обоих вариантов, но, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается. В результате получили очередной повод для holly war.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34401755
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.

Oracle вроде как удалось, или я вас не понял ?
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402011
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 ... ?
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402014
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2manИ еще вопрос: как вы относитесь к этой особенности диалекта?

Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402022
2man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.

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

Oracle юзает ROW подход, но позволяет переименовывать стандартнве имена OLd и NEW на другие (см.выше)
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402036
2man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. 2manИ еще вопрос: как вы относитесь к этой особенности диалекта?

Как к уродству. Но еще большее уродство -- квадратные скобки у идентификаторов.
но сиквел не запрещает использовать кавычки "my Crazy namE" вместо квадратных скобок, хотя рекомендует предпочитать скобки :)
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402111
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. 2manИ еще вопрос: как вы относитесь к этой особенности диалекта?

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

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

На счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %)
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402143
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2man Gluk (Kazan) ChAно, видимо, различие в подходах ведет к тому, что скрестить ужа и ежа практически никому не удается.

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

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

Что есть ROW-подход ? У Oracle есть вполне себе операторные триггеры, естественно из них нельзя обращаться к строкам. Об этом речь ?
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402223
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 придумала. Да и какая разница как оно называется? (если конечно этого в стандарте нету, а этого, я так понял, нету)
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402282
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Oracle вроде как удалось, или я вас не понял ?Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ? 2manзачем вместо общепринятых имен квазитаблиц OLD и NEW использоватать другие, словно MS SQL всегда скрыто выполняет конструкцию стандартаНаверное затем, что в стандарте, на момент появления такого подхода, не было никаких упоминаний о возможности произвольного изменения имени таких таблиц. Кстати, даже не уверен, что в стандартах тех лет в принципе упоминались процедурные расширения.
Безусловно, возможность переименования таковых можно было бы добавить, если бы это имело хоть какой-нибудь смысл. Лично у меня за все время работы с MSSQL ни разу не возникло этой потребности, поэтому не понимаю, что потерял. В то же время в бытность работы с Informix, где были только row-level триггера и возможность менять префиксы new и old на другие, я так и не удосужился ни разу поменять их на какие-либо другие. И, что характерно, надобности не возникало. Что я делал не так ? Или лучше так, как часто и по какой причине Вам приходилось пользоваться этой возможностью ?
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402379
2man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 , но это как-то некрасиво...
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402437
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA Gluk (Kazan)Oracle вроде как удалось, или я вас не понял ?Правильно ли я понял, что в случае statement-level в триггере Oracle есть аналоги transition-таблиц INSERTED и DELETED, в первой хранятся все строки после обновления, а во второй - до ?

Как я уже сказал нет. В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеров
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402556
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2man
1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичней :)
2. B еще короткие, т.к. "в лом" писать 8 символов вместо 3-х. И потому часто в запроса у меня встречается Inserted AS NEW , хотя можно и AS I , но это как-то некрасиво...

Гм... понятные... Или все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402571
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)В тех случаях когда это нужно используются ассоциативные массивы для передачи данных об измененных строках из row-триггеровНе вопрос. Практически всегда можно решить одну и ту же задачу теми средствами, которые присущи данной СУБД. Просто 2man был несколько невнятен в своем первом топике, что и вызвало легкий флейм. 2manЧестно?
1. Люблю понятные имена, соггласитесь, new old звучит как-то понятней и лаконичнейДа, пожалуй, но так уж сложилось исторически. В конце концов, как упоминалось выше, если уж хотите предьявить претензии, так это фирме Sybase, а не вешать всех собак на MS. Для этого, IMHO, хватает куда более веских причин.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402592
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinИли все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34402610
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA pkarklinИли все таки реально описывающие суть происходящего? Особенно, если вспомнить, что в MS SQL UPDATE реально это DELETE + INSERT.Павел, не горячитесь. Отсюда рукой подать до того, что в MS SQL inplace-UPDATE отсутствуют в принципе. Не думаю, что Вы это имели в виду.

Да нет, конечно же.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34403683
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin Владимир П.Но еще большее уродство -- квадратные скобки у идентификаторов.

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

Согласен!

pkarklinЧто тут уродского - чеснслово - непонятно. %)
1. Кавычки не сливаются с именем, в отличие от квадратных скобок -- у которых штрихи так же вертикальны, как и у букв, и которые к буквам близко расположены. Читать труднее намного.
2. Непривычно.
3. У всех так, а у MS, как обычно, всё по-своему и против стандарта.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34403805
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если использовать только допустимые идентификаторы, то никаких квадратных скобок не будет. К этому надо стремиться, IMHO.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34403848
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinНа счет квадратных скобок... Они необходимы только в случаи идентификаторов, которые не удовлетворяют стандартным требованиям к идектификаторам, например, пробел в имени поля. Что тут уродского - чеснслово - непонятно. %)
Позволю себе комментарий "со стороны". Необходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия.

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

1 Правда, у него таки есть один плюс, от которого просто так не отмахнешься - возможность в гетерогенных запросах обращаться к СУБД с отличающимся пониманием "стандартных требований"
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34403861
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНеобходимы-то необходимы, но сколь я видел, в MSSQL-коде их часто применяют повсеместно, для любых идентификаторов - видимо, из соображений единообразия.

Да, Вы правы. Утилиты по рисованию запросов мышкой от MS SQL добавляют их куда не поподя. :)
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34403876
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.3. У всех так, а у MS, как обычно, всё по-своему и против стандарта.Не могу понять, какого лешего Вам надо. Не нравятся квадратные скобки, не используйте. В соответствии со стандартом, MS поддерживает кавычки .

P.S. Блин, детский сад какой-то, сплошной невнятный маздай.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34404635
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНе могу понять, какого лешего Вам надо.
Чтоб было по стандарту и как у всех. Чтобы рекомендованный способ был -- кавычки. Чтоб графические инструменты автоматически подставляли кавычки, а не скобки. Чтоб скобки считались supported, но deprecated.
...
Рейтинг: 0 / 0
MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
    #34404717
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Чтоб было по стандарту и как у всех.

У MS SQL все по стандарту SQL92 - кавычки. Если Вам не нравятся родные утилиты - можете использовать любые сторонних производителей. Предлагаю на этом закончить, а то это уже становится похожим на брюзжание.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL vs ANSI - почему @val vs :val и Inserted/Deleted vs NEW/OLD?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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