Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
можно ли и как создать PK на временнуй таблицу уже после ее заполнения,
и чтоб имя констрейнта не повторилось в соседней сессии,
или только динамикой с добавлением к имени времени и спида?
27 сен 12, 12:44    [13231198]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
Glory
Member

Откуда:
Сообщений: 104751
pkpkpk
можно ли и как создать PK на временнуй таблицу уже после ее заполнения,

Командой ALTER TABLE
pkpkpk
и чтоб имя констрейнта не повторилось в соседней сессии,

Для этого нужно либо знать имена из соседних сессий. Или свое генерировать динамически.
27 сен 12, 12:46    [13231221]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
ну так именно что, если не декларируя в структуре, а командой ALTER TABLE,
надо задать имя констрайнта.
имя таблицы я задаю через #t,
и в соседней сессии соседнее #t не перепутается с моим #t.
а вот если я сделаю в одной сессии
alter table #t add constraint PK_t primary key (id) 

то такая же команда в другой обломается, т.к. уже есть констрейнт с таким именем PK_t, разве нет?
27 сен 12, 12:52    [13231260]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
короче, только динамика, да?
27 сен 12, 12:53    [13231267]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
pkpkpk
можно ли и как создать PK на временнуй таблицу уже после ее заполнения,
и чтоб имя констрейнта не повторилось в соседней сессии,
или только динамикой с добавлением к имени времени и спида?
А в чём проблема то???
create table #tmp (id int not null)
go
alter table #tmp add primary key clustered(id)
27 сен 12, 12:56    [13231302]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
alexeyvg,
ааааа!!!
это потому, что у меня между add и primary key еще и "constraint".
он подчекнул primary : incorrect syntax near "primary", думаю ага, имя хочет.
имя подставляю, ошибка исчезает
спасибо!
27 сен 12, 13:03    [13231366]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
Можно просто уникальный индекс создать с нормальным именем.
Имя для индекса уникально только в пределах таблицы.
27 сен 12, 13:41    [13231850]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
iap,

да, точно, спасибо.
хотя и с неименованным ПК проканалось
27 сен 12, 14:02    [13232110]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
pkpkpk
iap,

да, точно, спасибо.
хотя и с неименованным ПК проканалось
Он именованный! Просто имя придумал сервер и никому не сказал!
Хотя, узнать, конечно, легко
27 сен 12, 14:07    [13232181]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
pkpkpk
можно ли и как создать PK на временнуй таблицу уже после ее заполнения,
и чтоб имя констрейнта не повторилось в соседней сессии,
или только динамикой с добавлением к имени времени и спида?


создавать именно первичный ключ как contstraint вобщем-то бессмысленно, потому что ограничения целостности временно таблицы проверять глупо. легче создать просто уникальный индекс.
27 сен 12, 14:10    [13232233]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
MasterZiv
pkpkpk
можно ли и как создать PK на временнуй таблицу уже после ее заполнения,
и чтоб имя констрейнта не повторилось в соседней сессии,
или только динамикой с добавлением к имени времени и спида?


создавать именно первичный ключ как contstraint вобщем-то бессмысленно, потому что ограничения целостности временно таблицы проверять глупо. легче создать просто уникальный индекс.
Ограничение целостности для постоянных таблиц (для временных-то FK создать невозможно) вовсе и не требует CONSTRAINT PRIMARY KEY.
Можно CONSTRAINT UNIQUE, но допустим и просто уникальный индекс.
27 сен 12, 14:19    [13232362]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
iap
[Он именованный! Просто имя придумал сервер и никому не сказал!
Хотя, узнать, конечно, легко


имелось в виду, не мной именованный.
мне это и надо было. равно как и в результате #t никакое не #t.
короче, ok-уникально-именованный-но-не-мне-это-придумывать
27 сен 12, 14:22    [13232410]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
вообще мне надо, чтобы: заливалось как можно быстрее,
но и чтоб без дубликатов.
вероятность дублей, говорят, 0.
но проверить надо.
если дубли, выход из процедуры, и пускай исправляют.
по мне так быстрее всего в конце навесить ПК или уникальный индекс.
можно как-то еще быстрее сделать?
27 сен 12, 14:29    [13232507]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
pkpkpk,
WITH (IGNORE_DUP_KEY=ON)
27 сен 12, 14:33    [13232562]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
pkpkpk
Guest
iap,

не, мне не надо, чтобы дальше что-то выполнялось, если есть дубли.
надо выдать ошибку и пускай исправляют исходные данные.
они логически не могут иметь дубли.
если вдруг такое произошло, все останавливаем и должны выяснять, откуда у них бардак.
значит, где-то был сбой и данные недостоверные
27 сен 12, 14:38    [13232616]     Ответить | Цитировать Сообщить модератору
 Re: PK на временную таблицу после ее создания  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
MasterZiv
создавать именно первичный ключ как contstraint вобщем-то бессмысленно, потому что ограничения целостности временно таблицы проверять глупо. легче создать просто уникальный индекс.
Бредятина какая-то.
Почему глупо? Я б сказал наоборот. И промежуточные данные могут иметь ограничения, никак не контролируемы на таблах (к примеру), что в дальнейшем не выльется на поздем этапе (что дороже).
Контролировать данные надо всегда и везде (об экономии на спичках думают в последний момент).
Чем уникальный индекс отличается от уникального contstraint? Да ничем.
27 сен 12, 18:04    [13234525]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить