Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
pkpkpk
Guest |
можно ли и как создать PK на временнуй таблицу уже после ее заполнения, и чтоб имя констрейнта не повторилось в соседней сессии, или только динамикой с добавлением к имени времени и спида? |
27 сен 12, 12:44 [13231198] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Командой ALTER TABLE
Для этого нужно либо знать имена из соседних сессий. Или свое генерировать динамически. |
||||
27 сен 12, 12:46 [13231221] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
ну так именно что, если не декларируя в структуре, а командой ALTER TABLE, надо задать имя констрайнта. имя таблицы я задаю через #t, и в соседней сессии соседнее #t не перепутается с моим #t. а вот если я сделаю в одной сессии alter table #t add constraint PK_t primary key (id) то такая же команда в другой обломается, т.к. уже есть констрейнт с таким именем PK_t, разве нет? |
27 сен 12, 12:52 [13231260] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
короче, только динамика, да? |
27 сен 12, 12:53 [13231267] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
create table #tmp (id int not null) go alter table #tmp add primary key clustered(id) |
||
27 сен 12, 12:56 [13231302] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
alexeyvg, ааааа!!! это потому, что у меня между add и primary key еще и "constraint". он подчекнул primary : incorrect syntax near "primary", думаю ага, имя хочет. имя подставляю, ошибка исчезает спасибо! |
27 сен 12, 13:03 [13231366] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
Можно просто уникальный индекс создать с нормальным именем. Имя для индекса уникально только в пределах таблицы. |
27 сен 12, 13:41 [13231850] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
iap, да, точно, спасибо. хотя и с неименованным ПК проканалось |
27 сен 12, 14:02 [13232110] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
![]() Хотя, узнать, конечно, легко |
||
27 сен 12, 14:07 [13232181] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34664 |
создавать именно первичный ключ как contstraint вобщем-то бессмысленно, потому что ограничения целостности временно таблицы проверять глупо. легче создать просто уникальный индекс. |
||
27 сен 12, 14:10 [13232233] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
Можно CONSTRAINT UNIQUE, но допустим и просто уникальный индекс. |
||||
27 сен 12, 14:19 [13232362] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
имелось в виду, не мной именованный. мне это и надо было. равно как и в результате #t никакое не #t. короче, ok-уникально-именованный-но-не-мне-это-придумывать |
||
27 сен 12, 14:22 [13232410] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
вообще мне надо, чтобы: заливалось как можно быстрее, но и чтоб без дубликатов. вероятность дублей, говорят, 0. но проверить надо. если дубли, выход из процедуры, и пускай исправляют. по мне так быстрее всего в конце навесить ПК или уникальный индекс. можно как-то еще быстрее сделать? |
27 сен 12, 14:29 [13232507] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
pkpkpk,WITH (IGNORE_DUP_KEY=ON) |
27 сен 12, 14:33 [13232562] Ответить | Цитировать Сообщить модератору |
pkpkpk
Guest |
iap, не, мне не надо, чтобы дальше что-то выполнялось, если есть дубли. надо выдать ошибку и пускай исправляют исходные данные. они логически не могут иметь дубли. если вдруг такое произошло, все останавливаем и должны выяснять, откуда у них бардак. значит, где-то был сбой и данные недостоверные |
27 сен 12, 14:38 [13232616] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Почему глупо? Я б сказал наоборот. И промежуточные данные могут иметь ограничения, никак не контролируемы на таблах (к примеру), что в дальнейшем не выльется на поздем этапе (что дороже). Контролировать данные надо всегда и везде (об экономии на спичках думают в последний момент). Чем уникальный индекс отличается от уникального contstraint? Да ничем. |
||
27 сен 12, 18:04 [13234525] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |