Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 41 42 43 44 45 [46] 47 48 49 50 .. 75   вперед  Ctrl
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
locky
Сиквенс полезен. Хотя это не повод отказыватся от identity.

Задачу озвучьте.
4 фев 09, 13:57    [6777791]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
МСУ

Gluk (Kazan)
Чувствую себя непонятым (с)
При чем тут отображение данных ???

Хм... Да Вы же свозняком решили отображать записи из разных таблиц? Или я что-то не так понял?


1. Не я (просто есть такой подход)
2. Отображение этих данных вопрос вторичный, речь идет о сквозной идентификации двух и больше разных таблиц

P.S. С червяками больше сравнивать не буду :)
4 фев 09, 14:00    [6777822]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Gluk (Kazan)
1. Не я (просто есть такой подход)

Вот ей Богу, не пригождалось никогда )

Gluk (Kazan)
2. Отображение этих данных вопрос вторичный, речь идет о сквозной идентификации двух и больше разных таблиц

А зачем?

Gluk (Kazan)
P.S. С червяками больше сравнивать не буду :)

Спасибо )
4 фев 09, 14:02    [6777849]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
pkarklin
да, так вот без pl/sql пакетов, отслеживания зависимостей, автономных транзакций из оракла девяностых взял и ушел дальше 11g
а можно уточнить в котором месте то ушел ?


Кстати, по поводу зависимостей. В 2008 появилась парочка пользительных Dynamic Management функций:

sys.dm_sql_referencing_entities
sys.dm_sql_referenced_entities

А вот как их работа выглядит в реале:

USE AdventureWorks;
GO
CREATE VIEW Production.ApprovedDocuments
AS
    SELECT Title, ChangeNumber, Status
    FROM Production.Document
    WHERE Status = 2;
GO
SELECT referenced_schema_name AS schema_name
    ,referenced_entity_name AS table_name
    ,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');
GO
EXEC sp_rename 'Production.Document.ChangeNumber', 'TrackingNumber', 'COLUMN';
GO
SELECT referenced_schema_name AS schema_name
    ,referenced_entity_name AS table_name
    ,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');
GO


Msg 207, Level 16, State 1, Procedure ApprovedDocuments, Line 3 

Invalid column name 'ChangeNumber'.

Msg 2020, Level 16, State 1, Line 1

The dependencies reported for entity "Production.ApprovedDocuments" do not include references to
columns. This is either because the entity references an object that does not exist or because of an
error in one or more statements in the entity. Before rerunning the query, ensure that there are no
errors in the entity and that all objects referenced by the entity exist.
Обратите внимание, съезжание зависимостей выявляется ДО реального обращения к объекту со съехавшими зависимостями.
4 фев 09, 14:03    [6777868]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
skelet
Ну, во-первых они жестко типизированы.
Это вы считаете минусом?

odbc - ага нереальное щастье[/quot]

1. Я считаю это плюсом TVP в MS SQL.
2. Счастье не счастье, но им пользуются и будут пользоваться.
4 фев 09, 14:04    [6777879]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
МСУ
locky
Сиквенс полезен. Хотя это не повод отказыватся от identity.

Задачу озвучьте.

Например, последовательная нумерация документов.
Либо (что так любимо разными любителями разных классов и промслоев) - сохранение нового объекта со всеми его зависимостями, когда ДО добавления объекта было бы неплохо уже знать идентификатор (да-да-да, ГУИД тоже есть и имеет право на жизнь).
4 фев 09, 14:12    [6777963]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Вот разве что было бы неплохо заиметь "параметризованный сиквенс" - и было бы вообще всё хорошо.

-------------------------
There’s no silver bullet!
4 фев 09, 14:13    [6777972]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
И до кучи - локальный сиквенс.

-------------------------
There’s no silver bullet!
4 фев 09, 14:17    [6778006]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Yo.!
Guest
pkarklin

Кстати, по поводу зависимостей. В 2008 появилась парочка пользительных Dynamic Management функций:

а в процедурах оно отловит ренейм ?
к стате возвращаясь к sp_refreshsqlmodule, после наката sp2 у меня не появилось, как такое объяснить ?
4 фев 09, 14:18    [6778014]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
МСУ
locky
Сиквенс полезен. Хотя это не повод отказыватся от identity.

Задачу озвучьте.

Если лично вам они не нужны, бесполезно озвучивать задачи - они тоже вам не близки.
Тем не менее, заранее значение "счётчика" бывает охренительно полезно.
4 фев 09, 14:19    [6778015]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
skelet
Member [заблокирован]

Откуда: moskau
Сообщений: 5549
Gluk (Kazan)

полностью весь код, если можно

в sql-машинку такой тип не передать насколько я знаю, если бы об этом.

?
4 фев 09, 14:20    [6778029]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
а в процедурах оно отловит ренейм ?
к стате возвращаясь к sp_refreshsqlmodule, после наката sp2 у меня не появилось, как такое объяснить ?


А то?!

USE tempdb;
GO
CREATE TABLE dbo.Table1 (col1 int, col2 int)
GO

CREATE PROC dbo.Proc1
AS
    SELECT col1, col2
    FROM dbo.Table1;
GO

SELECT referenced_schema_name AS schema_name
    ,referenced_entity_name AS table_name
    ,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO
EXEC sp_rename 'dbo.Table1.col2', 'col3', 'COLUMN';
GO
SELECT referenced_schema_name AS schema_name
    ,referenced_entity_name AS table_name
    ,referenced_minor_name AS referenced_column
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO

DROP PROC Proc1
DROP TABLE Table1

Msg 207, Level 16, State 1, Procedure Proc1, Line 3
Invalid column name 'col2'.
Msg 2020, Level 16, State 1, Line 1
The dependencies reported for entity "dbo.Proc1" do not include references to columns. This is either
because the entity references an object that does not exist or because of an error in one or more
statements in the entity. Before rerunning the query, ensure that there are no errors in the entity and
that all objects referenced by the entity exist.

Даже строка в баче CREATE PROC указана где ошибочка. ;) А теперь, имея DDL триггера на CREATE, ALTER и DROP, можно аж Deffered Name Resolution отменить. :)

Yo.!
к стате возвращаясь к sp_refreshsqlmodule, после наката sp2 у меня не появилось, как такое объяснить ?


Просто обязана быть!
4 фев 09, 14:52    [6778329]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Targhan
Guest
Eugenkru,

ты что дурак?
Fox Software был куплен с потрохами Микрософтом ещё лет 12 назад вместе с Рашмором который используется во всех Микрософтовских субд, нашёлся тоже блин знатух
4 фев 09, 14:59    [6778387]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
locky
Например, последовательная нумерация документов.

Задача редкая, но меткая. Кто мешает завести промежучтоную таблицу с ID (int, identity); DocumentId (int)?

locky
Либо (что так любимо разными любителями разных классов и промслоев) - сохранение нового объекта со всеми его зависимостями, когда ДО добавления объекта было бы неплохо уже знать идентификатор

Для этого нужно лочить сиквенс, чтобы его другая таблица не инкрементнула.
А во-вторых, - задача в корне не верная, и Вы сами это знаете. Таких "любителей" нужно ацтреливать на месте

Зайцев Фёдор

Если лично вам они не нужны, бесполезно озвучивать задачи - они тоже вам не близки.
Тем не менее, заранее значение "счётчика" бывает охренительно полезно.

Не получится. Нужно его лочить. А все остальные таблицы должны курить бамбук?
Не озвучена еще не одна задача, которая бы характеризовала сиквенс как "фича! нужна! ибо."
4 фев 09, 15:03    [6778420]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Подпольщик
Guest
locky
И до кучи - локальный сиквенс.

Локальный сиквенс - временная последовательность?
В постгрях это есть. Можно создавать временные таблицы, представления и последовательности.
4 фев 09, 15:06    [6778450]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Подпольщик
Guest
МСУ
locky
Например, последовательная нумерация документов.

Задача редкая, но меткая. Кто мешает завести промежучтоную таблицу с ID (int, identity); DocumentId (int)?

locky
Либо (что так любимо разными любителями разных классов и промслоев) - сохранение нового объекта со всеми его зависимостями, когда ДО добавления объекта было бы неплохо уже знать идентификатор

Для этого нужно лочить сиквенс, чтобы его другая таблица не инкрементнула.
А во-вторых, - задача в корне не верная, и Вы сами это знаете. Таких "любителей" нужно ацтреливать на месте

Зайцев Фёдор

Если лично вам они не нужны, бесполезно озвучивать задачи - они тоже вам не близки.
Тем не менее, заранее значение "счётчика" бывает охренительно полезно.

Не получится. Нужно его лочить. А все остальные таблицы должны курить бамбук?
Не озвучена еще не одна задача, которая бы характеризовала сиквенс как "фича! нужна! ибо."

Лочить имеет смысл только при безразрывной нумерации, но тут последовательностями не обойтись. А в остальных случаях зачем лочить-то? Чтобы параллельные задачи встали?
4 фев 09, 15:11    [6778490]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
МСУ
Задача редкая, но меткая. Кто мешает завести промежучтоную таблицу с ID (int, identity); DocumentId (int)?

Ок. Давайте заведем "промежуточную таблицу".
Теперь, для полносты осчусчений, реализуем простой запрос, делающий вставку нескольких заголовков документов:
 insert into Docheader(DocNum)
 select .....
 from .....
Не затруднит ли вас, уважаемый, указать - что именно я должен написать в select list?


МСУ
Для этого нужно лочить сиквенс, чтобы его другая таблица не инкрементнула.

С каких таких бодунов, прости? Нахрена лочить?

МСУ

А во-вторых, - задача в корне не верная, и Вы сами это знаете. Таких "любителей" нужно ацтреливать на месте

Тех, что "лочит" - безусловно.

МСУ
Не получится. Нужно его лочить. А все остальные таблицы должны курить бамбук?
Не озвучена еще не одна задача, которая бы характеризовала сиквенс как "фича! нужна! ибо."

Если "лочить" - да, курят бамбук. Но, как выяснилось, таких вот "локеров" нужно отстреливать.
4 фев 09, 15:12    [6778493]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Подпольщик
А в остальных случаях зачем лочить-то? Чтобы параллельные задачи встали?

Объясняю. Как говорит Локи - задача - узнать будущий айди ДО вставки записи.
Считали значение сиквенса. А в этот момент другая хп инкрементнула сиквенс для своих нужд.
Как тут быть?

locky

Ок. Давайте заведем "промежуточную таблицу".
Теперь, для полносты осчусчений, реализуем простой запрос, делающий вставку нескольких заголовков документов:
 insert into Docheader(DocNum)
 select .....
 from .....
Не затруднит ли вас, уважаемый, указать - что именно я должен написать в select list?



declare @mytablevar table (id int, firm_id int, firm_name varchar(50))

insert into t (firm_id, firm_name)
  output 
         inserted.id, 
         inserted.firm_id, 
         inserted.firm_name
  into @mytablevar (id, firm_id, firm_name)
select 5 firm_id, 'Тест' firm_name

select * from @mytablevar

Устроит? Для сиквела 2000 - есть хитрость с гуидами.

locky
Тех, что "лочит" - безусловно.

Тех, ставит такие задачи - и подавно.

locky
Если "лочить" - да, курят бамбук. Но, как выяснилось, таких вот "локеров" нужно отстреливать.

См. выше.
4 фев 09, 15:20    [6778576]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Подпольщик
Guest
МСУ, когда вы считали сиквенс, он инкреметнулся автоматом. Всё.
Больше никакая таблица не получит это же значение.
4 фев 09, 15:21    [6778585]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
МСУ
Не затруднит ли вас, уважаемый, указать - что именно я должен написать в select list?


Кстати, триггера отменили?
4 фев 09, 15:21    [6778588]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Подпольщик
Guest
МСУ, и даже когда вы откатываетесь, то сиквенс не откатывается.
Это значение будет гарантировано уникальным для всех, кто пользуется данным сиквенсом.
Зачем изобретать велосипеды?
4 фев 09, 15:24    [6778610]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
МСУ
Объясняю. Как говорит Локи - задача - узнать будущий айди ДО вставки записи.
Считали значение сиквенса. А в этот момент другая хп инкрементнула сиквенс для своих нужд.
Как тут быть?

Срочно позовите софтварера! Пусть пояснит - как тут быть


declare @mytablevar table (id int, firm_id int, firm_name varchar(50))

insert into t (firm_id, firm_name)
  output 
         inserted.id, 
         inserted.firm_id, 
         inserted.firm_name
  into @mytablevar (id, firm_id, firm_name)
select 5 firm_id, 'Тест' firm_name

select * from @mytablevar
Забавно. И что, это даст мне монотонно нарастающую последовательность номеров?
А что будет, если запустить одновременно 2 таких запроса? Номер (совершенно случайно) пересекаться не будут?
4 фев 09, 15:24    [6778611]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
МСУ
МСУ
Не затруднит ли вас, уважаемый, указать - что именно я должен написать в select list?

Кстати, триггера отменили?

пример для триггера, если не сложно.
Циклы будем крутить - или как?
4 фев 09, 15:25    [6778615]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Подпольщик
МСУ, когда вы считали сиквенс, он инкреметнулся автоматом. Всё.
Больше никакая таблица не получит это же значение.

Если nextval - то да. А если currval - то нет.
4 фев 09, 15:25    [6778617]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД!  [new]
Подпольщик
Guest
locky, номера сиквенса в принципе не пересекаются.
Если только вы его сами не сбросите.
4 фев 09, 15:26    [6778632]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 41 42 43 44 45 [46] 47 48 49 50 .. 75   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить