Xpoint
   [напомнить пароль]

Странности команды INSERT

Метки: [без меток]
2006-07-12 07:55:19 [обр] Top manager(0/2)[досье]

Почему при выполнении запросов

DECLARE @html TABLE ([id] INT IDENTITY(1,1), [html] NVARCHAR(4000) NOT NULL DEFAULT '')
INSERT INTO @html ([html]) VALUES ('111')
INSERT INTO @html ([html]) VALUES ('222')
INSERT INTO @html ([html]) VALUES ('333')
INSERT INTO @html ([html]) VALUES ('444')
INSERT INTO @html ([html]) VALUES ('555')
SELECT * FROM @html ORDER BY [id]

Получается результат:

idhtml
1111
2222
3333
4555
5444
спустя 3 часа 36 минут [обр] Василий Свиридов(3/175)[досье]
а если хотите по порядку - указывайте ключ явно. Метод, которым MSSQL сортирует данные поступающие по порядку весьма загадочен... Я на MS SQL Server такое наблюдал неоднократно..
спустя 26 минут [обр] Top manager(0/2)[досье]
Василий Свиридов[досье] Во-во, точно странности.
Я бы так и сделал, но вот только реальная ситуация не настолько проста, как пример. Количество записей не известно.
спустя 10 часов [обр] Василий Свиридов(3/175)[досье]
можно сделать MAX(id) + 1 в инсерте, эдакий аналог автоинкремента (не именно так, но идею вы поняли я надеюсь)
спустя 12 часов [обр] Алексей Рюмин aka Dwarf(120/864)[досье]

Top manager[досье] Очень странно. Поставьте в QA "Results in Text" и запостите сюда результат выполнения вот этого:

SET SHOWPLAN_TEXT ON
GO
DECLARE @html TABLE ([id] INT IDENTITY(1,1), [html] NVARCHAR(4000) NOT NULL DEFAULT '')
INSERT INTO @html ([html]) VALUES ('111')
INSERT INTO @html ([html]) VALUES ('222')
INSERT INTO @html ([html]) VALUES ('333')
INSERT INTO @html ([html]) VALUES ('444')
INSERT INTO @html ([html]) VALUES ('555')
SELECT * FROM @html ORDER BY [id]

На SQL 2000 такого не наблюдается.

спустя 18 часов [обр] Top manager(0/2)[досье]
Василий Свиридов[досье] идея, но значительно услоджняет код
Алексей Рюмин aka Dwarf[досье] Да, не спорю, на MSSQL2000 работает. Но(!), не всегда: у меня стоит MSSQL2000 SE и понажимав несколько раз F5 в двух случаях из пяти, выходил такая "ошибка", точнее странность
спустя 5 часов [обр] Алексей Рюмин aka Dwarf(120/864)[досье]

Top manager[досье] Результат

select @@version

в студию.

спустя 13 минут [обр] Top manager(0/2)[досье]
Алексей Рюмин aka Dwarf[досье]
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 3)
спустя 2 дня 22 часа [обр] Алексей Рюмин aka Dwarf(120/864)[досье]
Top manager[досье] Попробуйте SP4 поставить. На трех серверах MS SQL 2000 SP4 ваша странность не воспроизводится.
Powered by POEM™ Engine Copyright © 2002-2005