Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Последовательный номер строки в результирующего набора  [new]
Kiril
Member

Откуда: Болгарии
Сообщений: 39
Последовательный номер строки в SELECT запросе.
Используйте следующий запрос в INSTEAD INSERT TRIGGER:


SELECT ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP), * FROM Inserted;

Я хочу последовательно нумериравать записей в таблице Inserted(Inserted на таблица имеет уникальный ключ, но он является NULL за вся записи).
Мои вопросы:
1. Этот запрос будеть ли последовательно нумериравать записей в таблице Inserted? Предложение (ORDER BY CURRENT_TIMESTAMP) не будеть ли изменять порядок записеий в таблице Inserted?
2. Могу ли я использовать следующий запрос для этой цели?
SELECT ROW_NUMBER() OVER (ORDER BY CstId), * FROM Inserted
(CstId является первичным ключ-он NULL для всех записи в таблице Inserted)
25 июн 09, 14:13    [7343048]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
1.не надо Inserted нумеровать да и не получиться у вас етого
2. что такое порядок записей в таблице ?????
-------------------------------------
Jedem Das Seine
25 июн 09, 14:24    [7343140]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
Kiril
Member

Откуда: Болгарии
Сообщений: 39
Это только один пример для описания того, что меня интересует.

1.не надо Inserted нумеровать да и не получиться у вас етого. Почему?


Я использую два раза напримерь запрос в виду: SELECT * FROM Inserted в тригере. В этом случае набор данных, такой же.

Просто я хотел нумериравать записей в таблице Inserted без изменить их последователност.
1 string1
2 string2
3 string3
4 string4
5 string5
6 string6
7 string7
8 string8
9 string9
25 июн 09, 15:31    [7343655]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Кирил, ну попробуйте :)
Понимаете,даже если вы "поставите" записи в определном порядке при выборке из таблицы Inserted ,все равно никто не гарантирует их порядок в таблице куда вы вставляете из Inserted.

Как пронумеровать записи при выборке написано в FAQ.
-------------------------------------
Jedem Das Seine
25 июн 09, 15:38    [7343692]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
Kiril
Member

Откуда: Болгарии
Сообщений: 39
Maxx,

Я имею ввиду следующий:
Следующий два запроса в тригере возвращает ли один и тот же набор данных. Порядок записеий тот же самый? Это мой вопрос.

1. SELECT * FROM Inserted;
2. SELECT ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP), * FROM Inserted
25 июн 09, 15:50    [7343759]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
iljy
Member

Откуда:
Сообщений: 8711
Kiril,

порядок записей в выборке определяется только предложением ORDER BY. других вариантов нет. если оно не указано - порядок записей у вас может как совпасть, так и нет.
25 июн 09, 16:04    [7343862]     Ответить | Цитировать Сообщить модератору
 Re: Последовательный номер строки в результирующего набора  [new]
Kiril
Member

Откуда: Болгарии
Сообщений: 39
iljy,

Знаю.
Но в этом случае используется таблице Inserted(Таблицы Inserted и Deleted создаются в тригере).
Все поля(в PRIMARY KEY) в тригере INSTEAD OF INSERT являются NULL.


1. SELECT * FROM Inserted ORDER BY Field_ID;
2. SELECT ROW_NUMBER() OVER (ORDER BY Field_Id), * FROM Inserted
25 июн 09, 16:20    [7343953]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить