MS SQL identity

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

MS SQL identity

Сообщение Lepsik »

-- ALTER TABLE Employee alter column id int identity (1,1)
а почему такая команда не проходит ?

Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'identity'.


потому что есть записи ?

-- это проходит
ALTER TABLE Employee add ids int identity (1,1)
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

повесить данное проперти на существующую колонку нельзя. period. :)
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

но ведь ручками в манагере вешается без проблем.

да и лежат там сплошь уникальные числа
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Lepsik писал(а):но ведь ручками в манагере вешается без проблем.

да и лежат там сплошь уникальные числа
не верь глазам своим. они делают drop/create table через временную таблицу скорее всего. :)
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

>>они делают drop/create table через временную таблицу скорее всего

издеваешся ? может убивают - добавляют колонку ?
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

они реально могут делать что угодно. это МС. они знают "кишки" скл сервера. просто пересоздать таблцу с точки зрения схемы намного проще если нет много данных в ней ;)
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

да это типа был баг. только странный. открыл -закрыл манагер и все прошло
Последний раз редактировалось Lepsik 26 июн 2003, 09:06, всего редактировалось 2 раза.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

был подобный баг в скл сервере только там про налы и внешние ключи. я зарепортил этот баг очень давно. потом они написали что баг пофиксен в первом сервис паке, но я реально видел его и после этого на машинах с установленным сервис паком :) другими словами. это может быть баг. или кто-то уже успел вставить запись с налом. сделай все в одной транзакции и апдейт и альтер тейбл.... :)
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

папа Карло писал(а):они реально могут делать что угодно. это МС. они знают "кишки" скл сервера. просто пересоздать таблцу с точки зрения схемы намного проще если нет много данных в ней ;)
оказалось, что drop/create table в 3-4 раза быстрее, чем add/drop column (как вы понимаете, в тесте приходится зацикливать и drop column для упрощения)

create table ad (id int, n varchar(100), d datetime)
declare @i int

select getdate()
set @i=0
while @i<100 begin
alter table ad add f real
alter table ad drop column f
set @i=@i+1
end

select getdate()
set @i=0
while @i<100 begin
drop table ad
create table ad (id int, n varchar(100), d datetime)
set @i=@i+1
end

select getdate()

drop table ad
Ответить