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

Откуда: Пиндырдышханда
Сообщений: 948
автор
982605
986463
986457
993343
993344
998536
998537
1000187
1000175
1001368
1001365
1003385
1003384
842539520
842539515
842542419
842542433
842542432
842542430
842550524

Собственно, почиму оно так выросло? А если за пределы int'а выйдет?(((
10 июл 09, 14:54    [7402368]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
_djХомяГ
Guest
Одна из причин
create table #test (id int identity,name varchar(10))

begin tran
insert into #test(name) 
select 'asasa'
union all
select 'bbbb'
union all
select 'cccc'
rollback tran

insert into #test(name) 
select 'asasa'

select * from #test

id          name       
----------- ---------- 
[b]4 [/b]          asasa

10 июл 09, 14:59    [7402397]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Erik_Kartmann
А если за пределы int'а выйдет?(((


Будет ошибка переполнения.
10 июл 09, 15:00    [7402402]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Erik_Kartmann
А если за пределы int'а выйдет?(((

выяснить это невозможно
declare @t table (id int identity(2147483647, 1));
insert into @t default values;
insert into @t default values;
кстати, поле identity не обязано иметь тип int
10 июл 09, 15:03    [7402415]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Другая из причин
CREATE TABLE T(ID INT NOT NULL IDENTITY);
SET IDENTITY_INSERT T ON;
INSERT T(ID)
      SELECT 982605
UNION SELECT 986463
UNION SELECT 986457
UNION SELECT 993343
UNION SELECT 993344
UNION SELECT 998536
UNION SELECT 998537
UNION SELECT 1000187
UNION SELECT 1000175
UNION SELECT 1001368
UNION SELECT 1001365
UNION SELECT 1003385
UNION SELECT 1003384
UNION SELECT 842539520
UNION SELECT 842539515
UNION SELECT 842542419
UNION SELECT 842542433
UNION SELECT 842542432
UNION SELECT 842542430
UNION SELECT 842550524;
SELECT * FROM T;
SET IDENTITY_INSERT T OFF;
10 июл 09, 15:04    [7402420]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
А как его нормализовать можно, чтобы связи не нарушились?
Хотябы, чтобы оно снова продолжалось с :
1003384 ?
10 июл 09, 15:05    [7402425]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> А если за пределы int'а выйдет?(((

если действительно есть такая угроза - меняйте тип столбца.
на bigint, например. он-то уж доооолго не переполнится.

Posted via ActualForum NNTP Server 1.4

10 июл 09, 15:08    [7402450]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
iiyama
Member

Откуда:
Сообщений: 642
DBCC CHECKIDENT
10 июл 09, 15:08    [7402454]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Erik_Kartmann
А как его нормализовать можно, чтобы связи не нарушились?
Хотябы, чтобы оно снова продолжалось с :
1003384 ?


Чтоб не нарушились связи просто не получится. И, rvr? до инта Вам еще далековато?!
10 июл 09, 15:09    [7402455]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Erik_Kartmann
А как его нормализовать можно, чтобы связи не нарушились?
Хотябы, чтобы оно снова продолжалось с :
1003384 ?
А что будет, когда после этого дойдёт до 842539520?
А вообще,
DBCC CHECKIDENT(...)
10 июл 09, 15:09    [7402458]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
pkarklin
Erik_Kartmann
А как его нормализовать можно, чтобы связи не нарушились?
Хотябы, чтобы оно снова продолжалось с :
1003384 ?


Чтоб не нарушились связи просто не получится. И, rvr? до инта Вам еще далековато?!

Нет. Связи можно не трогать. Имеются ввиду будующие записи
Ну по моим расчтёам, когда 1003384 дойдёт до 842539520 - это будит уже другой программист
10 июл 09, 15:11    [7402473]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Erik_Kartmann
Нет. Связи можно не трогать. Имеются ввиду будующие записи
Ну по моим расчтёам, когда 1003384 дойдёт до 842539520 - это будит уже другой программист


Можно я Вас буду цитировать?
10 июл 09, 15:15    [7402508]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
Ни в коем случае! ;)

---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 1) '
10 июл 09, 15:32    [7402625]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
DBCC CHECKIDENT ('tableName', NORESEED)
GO
DBCC CHECKIDENT ('tableName', RESEED, 1003385)
GO

почиму для некоторых таблиц does not contain an identity column. ?
Как тогда идентификатор ставить?

---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 1) '
10 июл 09, 16:20    [7402975]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Erik_Kartmann
DBCC CHECKIDENT ('tableName', NORESEED)
GO
DBCC CHECKIDENT ('tableName', RESEED, 1003385)
GO

почиму для некоторых таблиц does not contain an identity column. ?
Как тогда идентификатор ставить?

- потому что у этих таблиц нет identity
- никак не ставить
10 июл 09, 16:32    [7403045]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Glory
- никак не ставить
Ну, добавить новое поле-то можно! Со свойством IDENTITY
10 июл 09, 16:38    [7403093]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
биин( точно.
PK там высчитывается max(PK)+1
Переделаю на вставку в имеющуюся дырку.
---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 1) '
10 июл 09, 16:42    [7403124]     Ответить | Цитировать Сообщить модератору
 Re: что с полем identity ?  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
или постараюсь переделать в идентити
10 июл 09, 16:43    [7403136]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить