Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: Простите, накипело.  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Gold
Для меня INSTED OF для таблиц - это вобще нонсенс. Я понимаю INSTEAD OF для представлений, но не для таблиц.

Ну, в принципе есть некоторое применение. Сходу приходит в голову - заменять удаление записи на update в record_deleted = true. Также им можно эмулировать merge.

Gold
6) Может я насчёт алиасов и не понимаю. Задача такая: пишу команду типа UPDATE "MyTable" T SET T."Name" = 'zzz'. Буду очень благодарен если вы мне покажете как заставить такой запрос работать.

Хм. А почему бы не попробовать убрать "T." после SET? Не понимаю, зачем он там нужен.
3 июл 06, 14:55    [2836995]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Если не хотите учиться работать и понять - конечно разговор бессмысленный.

Я раньше - давно - тоже на IB работал. Потом на MS SQL перешел - малость поругался, потом привык. Теперь все наоборот - как-то решил поиспользовать Yaffil (для мелкой локальной программы), так матерился полдня и пальцы попереломал себе :) - после MS SQL такой кошмарррррррр этот интербэйзовский синтаксис, руки бы им оторвал за такие селекты и т.д.

Так что нужно сначала на себя посмотреть, а потом уж зеркало молотком :))

-- Tygra's --
3 июл 06, 14:57    [2837013]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

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

автор
Я за свои слова отвечаю, потому как когда не работал с MSSQL, так сидел и помалкивал. А теперь я с ним работаю и просто нехочу чтобы вы молодым лапшу вешали про то как хорошо на SQL-сервере.


Вы не представляете, я тоже с ним работаю. И тоже не хочу, чтобы "специалисты", знающие инструмент без году неделю вешали молодым лапшу про то, как он плох.

автор
Я тебе могу ответить по пунктам:


Хм. Я Вам тоже, по пунктам:

автор
1) INSTEAD OF - это не before. Для меня INSTED OF для таблиц - это вобще нонсенс. Я понимаю INSTEAD OF для представлений, но не для таблиц.


Да, это не BEFORE. Но то, что Вы не понимаете, как применить и реализовать функционал BEFORE на INSTEAD OF для табюлицы еще не означает, что это не используют другие.

автор
2) Обрати внимание на то что вы этого ждали ПЯТЬ лет !!! Это ни в какие ворота не лезет.


ВЫ знаете, лично мне за 1, 2, 3 (считает на пальцах) ... 11 работы не было ни жарко ни холодно от того, что не было у MS SQL такого. Чеснслово - как то реализовывал все и без этих "фич".

автор
3) Представления не должны наследовать ограничения таблиц. Обдумай ситуацию с которой я столкнулся: есть таблица с полем NOT NULL, есть представление на таблице, есть триггер на представлении, который пишет данные в таблицу и всегда заполняет поле NOT NULL конкретным значением. Объясни мне какого хрена представление требует чтобы я при вставке через представление обязательно задавал значение этого поля, а?


Хм... Интересная логика. А откуда движку сервера знать, что Вы там в триггере написали?! Разреши Вам вставялть NULL, так Вы и вставите ведь! Как по другому проверить целостность данных, если учесть, что представление, это не реальный объект, а всего-навсего "сохраненный запрос".

автор
4) У меня если что глючит - я чиню. Глюк в MDAC - это не мой глюк. Конкретно в случае обнаружения бага в Firebird он будет вылечен в течении от нескольких часов до нескольких недель, но не ПЯТЬ лет!


Эээ... Какой глюк MDAC вы лечите 5 лет? Можете описать Ваш конкретный глюк?

автор
5) В консерватории говоришь? Урл по-моему 4Кб может занимать. Т.е. сохранить два урла в таблице - это уже предел для MsSQL или в консерватории неполадки? Или может блобами всё заменить? Может в MSSQL стрроковые блобы так же быстро обрабатываются как строки и имеют такой же богатый набор функций? Тогда снимаю шляпу.


Хм... Точно, дело было в консерватории! :) А не приходило в голову, хранить урлы не в полях одной записи, а в одном поле нескольких записей.

автор
6) Может я насчёт алиасов и не понимаю. Задача такая: пишу команду типа UPDATE "MyTable" T SET T."Name" = 'zzz'. Буду очень благодарен если вы мне покажете как заставить такой запрос работать.


Чтобы заставить такой запрос работать, надо приложить хотя бы немного усилий на ИЗУЧЕНИЕ той СУБД, с которой работаешь, в конкретном случаи синтаксис T-SQL.

USE pubs
GO

UPDATE
  A
SET
  au_id = au_id
FROM
  authors A
3 июл 06, 15:02    [2837041]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
2 softwarer:

Примененине найти можно. Сама идея - бред. Если я вставляю данные в таблицу, то что может быть вместо? Это ж таблица!!! Я ж говорю что для представления INSTEAD OF - это самое оно, но не для таблицы.

По поводу почему убрать нельзя алиасы: можно, но во первых я хочу чтобы мне подсказки по полям всякие умные тулы вываливали когда я набрал алиас точка, во вторых я либу делаю которая запросы генерит - мне удобнее чтобы алиасы были.

2 tygra:

Ну во всяком случае ты хотя бы не отрицаешь что в MS SQL куча недостатковю. Лучше помоги мне конкретную проблему решить - похоже я снова на грабли наступил. Как можно об MSSQL после этого хорошо отзываться. Я на большее кол-во граблей уже наступил чем кол-во недель работы с ним :-( В общем напишу щас вопрос в соотв. ветку - помоги пожалуйста.
3 июл 06, 15:07    [2837076]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Да везде недостатки есть. Надо только привыкнуть и научиться - и их не будет :))

-- Tygra's --
3 июл 06, 15:11    [2837099]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
pkarklin
Хм... Интересная логика. А откуда движку сервера знать, что Вы там в триггере написали?! Разреши Вам вставялть NULL, так Вы и вставите ведь! Как по другому проверить целостность данных, если учесть, что представление, это не реальный объект, а всего-навсего "сохраненный запрос".

Хм. Вы прямо таки провоцируете рассказать, как.

Ответ: очень просто. Пусть представление получит данные, даст отработать триггерам, попробует вставить в таблицы - и выругается, если обнаружит нарушение ограничений таблиц. Логика же "не уверен, что получится, поэтому на всякий случай не дам" - мягко говоря, не очень удобна.

pkarklin
Хм... Точно, дело было в консерватории! :) А не приходило в голову, хранить урлы не в полях одной записи, а в одном поле нескольких записей.

Хм. Этак легко обосновать и преимущество dBase над любым RDBMS Server.
3 июл 06, 15:11    [2837102]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

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

По последнему пункту ответ корректнее будет выглядеть так:

USE pubs
GO

UPDATE
  A
SET
  A.au_id = A.au_id
FROM
  authors A

автор
Примененине найти можно. Сама идея - бред. Если я вставляю данные в таблицу, то что может быть вместо? Это ж таблица!!! Я ж говорю что для представления INSTEAD OF - это самое оно, но не для таблицы.


Вам softwarer привел более чем практические примеры!

автор
Ну во всяком случае ты хотя бы не отрицаешь что в MS SQL куча недостатковю.


Хм... А никто этого и не отрицает!

автор
Лучше помоги мне конкретную проблему решить - похоже я снова на грабли наступил. Как можно об MSSQL после этого хорошо отзываться. Я на большее кол-во граблей уже наступил чем кол-во недель работы с ним :-( В общем напишу щас вопрос в соотв. ветку - помоги пожалуйста.


Вот это совсем другой разговор! welкам: https://www.sql.ru/forum/actualtopics.aspx?bid=1
3 июл 06, 15:15    [2837128]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
mir
Member

Откуда: Томск
Сообщений: 1027
Ограничение длины записи в MSSQL, конечно, недостаток. Но во-первых, я лично столкнулся с ним за все время один раз, и то обошел. Малоактуальная проблема. Во-вторых, если говорить про пример с URL, то используейте в длинных текстовых полях тип text, а не char/varchar, и будет щастье.
3 июл 06, 15:17    [2837137]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
2 Tygra:

Мой вопрос отменяется - воспроизвести не могу.

2 pkarklin:

Я пять лет ничего не лечу. Я не могу нйти ответ на вот это
3 июл 06, 15:18    [2837153]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Gold
Примененине найти можно. Сама идея - бред. Если я вставляю данные в таблицу, то что может быть вместо? Это ж таблица!!!

Я же сказал Вам, что может быть вместо.

ЭТО - НЕ ТАБЛИЦА. Это - некий логический объект. Который физически может быть "набором таблиц" (в случае партиционирования), представлением, приложением, публикующим данные с другого сервера, чем угодно еще и в том числе "физической таблицей".

Скажем, мне однажды потребовалось переделать приложение так, чтобы объекты определенного класса не создавались-уничтожались, а брались из пула. Я переделал конструктор (на операцию "взять из пула") и деструктор (на операцию "вернуть в пул") и вполне доволен. Хотя ожидаю от Вас такого же возгласа: "Это ж конструктор!!!".

Gold
Я ж говорю что для представления INSTEAD OF - это самое оно, но не для таблицы.

Я Вам только что рассказал, чем это удобно для таблицы.

Мало того, на практике достаточно часто оказывается, что некий объект, ранее бывший таблицей, стоит переделать в представление; представление переделать в materialized view (то есть в таблицу) итп. Эти изменения не должны ломать логику системы.

Gold
По поводу почему убрать нельзя алиасы: можно, но во первых я хочу чтобы мне подсказки по полям всякие умные тулы вываливали когда я набрал алиас точка,

Хм. Умные вываливают без всяких точек, по крайней мере там, где эти точки не нужны.

Gold
во вторых я либу делаю которая запросы генерит - мне удобнее чтобы алиасы были.

Тогда напишите заодно и собственный сервер БД, где они будут именно в таком виде. Боюсь, Вы не столь значимый клиент, чтобы Microsoft решил подладить свои решения под Ваше удобство. Особенно если учесть, сколь криво такое желание само по себе.
3 июл 06, 15:21    [2837167]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
А в чем там проблемы?
Если вы не выполняли BEGIN TRANSACTION, то и коммит не может пройти.

-- Tygra's --
3 июл 06, 15:23    [2837185]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
softwarer
Ответ: очень просто. Пусть представление получит данные, даст отработать триггерам, попробует вставить в таблицы - и выругается, если обнаружит нарушение ограничений таблиц. Логика же "не уверен, что получится, поэтому на всякий случай не дам" - мягко говоря, не очень удобна.


Не исключаю, такой функционал может быть необходим и его стоит "требовать" реализовать от разрабочиков MS SQL.
3 июл 06, 15:26    [2837209]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
2 mir:

А за сколько приёмов считываются сервером поля типа Text, а? Сомневаюсь что за один (нам не подходит по быстродействию). И все ли строковые функции так же замечательно работают с блобами?

2 pkarklin:

По поводу представлений softwarer объяснил. С триггерами INSTEAD OF - я не говорю что оно не работает. Я говорю что по-моему оно должно быть не так. Для таблиц BEFORE/AFTER, для представлений INSTEAD OF. Эмулировать MERGE можно и другим способом. По поводу UPDATE с алиасами - это же другой синтаксис, хотя всё равно спасибо, может использую это где-то.
3 июл 06, 15:28    [2837222]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
2 Tygra:

Как это я не выполнил BEGIN TRANSACTION ? Я его выполнил потому как прохожу условие

if (null != Transaction && null != Transaction.Connection && ConnectionState.Open == Transaction.Connection.State)

Если его кто-то и не выполнил, то это уж точно не я. Я просматривал это и думаю что это всё-таки виноват MDAC.
3 июл 06, 15:34    [2837255]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Gold
Для таблиц BEFORE/AFTER, для представлений INSTEAD OF

Я бы лично предпочел, чтобы все три вида триггеров были и для таблиц, и для представлений.
3 июл 06, 15:38    [2837284]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gold
Я не могу нйти ответ на вот это


Ну так Вы посмотрели профайлером, что у Вас выполняется на сервере? Может У Вас действительно нет соответствующего BEGIN или в коде на стороне сервера где-нить ROLLBACK есть?

автор
По поводу UPDATE с алиасами - это же другой синтаксис,


Да, но это синтаксис (Transact-SQL extension to DELETE) той СУБД, с которой Вы работаете.

автор
Как это я не выполнил BEGIN TRANSACTION ? Я его выполнил потому как прохожу условие


Настоятельно рекомендую не взирая на кажущуюся правильность клиентского кода посмотреть, что выполняется на сервере.
3 июл 06, 15:39    [2837294]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Вы явно писали где-то BEGIN TRANSACTION? Если нет - тогда нечего и коммит вызывать, оно само закоммитится.

Поле типа текст считывается так же, как и все другие поля - селектом. Ничем не отличается в этом случае.

-- Tygra's --
3 июл 06, 15:40    [2837295]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gold
Я просматривал это и думаю что это всё-таки виноват MDAC.


Хм... Вы используете ODBC Call syntax для вызовов хп?
3 июл 06, 15:41    [2837304]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32912

Привет, tygra!
Ты пишешь:

tygra
t> Поле типа текст считывается так же, как и все другие поля - селектом.
t> Ничем не отличается в этом случае.
Речь не об этом.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

3 июл 06, 15:42    [2837305]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gold
А за сколько приёмов считываются сервером поля типа Text, а? Сомневаюсь что за один (нам не подходит по быстродействию).


Что есть для Вас "за один прием"?! Сервер (MS SQL считывает) страницами (по 8 кб).
3 июл 06, 15:43    [2837312]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
andy st
Member

Откуда:
Сообщений: 906
Gold
Если его кто-то и не выполнил, то это уж точно не я. Я просматривал это и думаю что это всё-таки виноват MDAC.

вторую ссылку ответа поисковика изредка стоит прочитать, а не намертво зацикливаться на первой, тем более такой древней... ;)
3 июл 06, 15:47    [2837328]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
_pgSam_
Guest
Gold
Вобще разговор считаю бессмысленным.

2 _pgSam_:
Что бы ты знала: я тебе искренне сочувствую. Надеюсь тебе будет легче от того что не только у вас такие проблемы ;-)

Спасиб:)

Кстати: тут у вас топик водится. "Сильные стороны MS SQL". Уж больно ситуация похожа... Может это массовая паранойа?
3 июл 06, 15:49    [2837342]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
_pgSam_
Gold
Вобще разговор считаю бессмысленным.

2 _pgSam_:
Что бы ты знала: я тебе искренне сочувствую. Надеюсь тебе будет легче от того что не только у вас такие проблемы ;-)

Спасиб:)

Кстати: тут у вас топик водится. "Сильные стороны MS SQL". Уж больно ситуация похожа... Может это массовая паранойа?

А я вот сейчас подумал: смотрит работодатель и видит что работает у него пара работников с не очень популярной базой и если мало ли чего - трудно их заменить будет. А они (эта пара работников) это понимают и слишком конфортно себя чувствуют, а чуть какие перемены - сразу в штыки. Вывод - надо переходить на другую базу. Посчитал работадатель чего и скока - Оракл вроде дороговато, да и разработчики там дороже, вот и принял такое решение. Может кстати уже и новая команда разработчиков имеется, а вас уже списать решили?
И на параною уже не похоже.

Скорее всего конечно не так, но не надо считать всех не согласных с вашим мнение дураками. Наверняка есть какие-то резоны, надо попытаться их понять, и может дело и не в откатах (с Оракла то они побольше были б). Борцом за правду конечно уютней себя чувствовать, но неконструктивно - так и будете на всё жаловаться(типа как Gold), вместо того что учиться и нормально работать
3 июл 06, 16:20    [2837557]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
hvlad
Member

Откуда:
Сообщений: 11578
pkarklin
Gold
Я не могу нйти ответ на вот это


Ну так Вы посмотрели профайлером, что у Вас выполняется на сервере? Может У Вас действительно нет соответствующего BEGIN или в коде на стороне сервера где-нить ROLLBACK есть?
Вместо BEGIN TRAN драйверы часто пишут SET IMPLICIT_TRANSACTIONS ON
3 июл 06, 16:34    [2837658]     Ответить | Цитировать Сообщить модератору
 Re: Простите, накипело.  [new]
pkarklin
Member

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

Именно так. Поэтому надо глянуть трассу и посмотреть, что там реально происходит.
3 июл 06, 16:36    [2837675]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить