Come la maggior parte delle persone che lavorano con Sql Server sa, è possibile dichiarare una tabella temporanea in questo modo:Indicare dinamicamente gli indici in SQL Server 2005?
create table #foo
(
row_id int identity not null primary key,
bar varchar(50) not null default 'YoMomma'
);
... Questo creerà una chiave primaria e un vincolo di default in questa tabella temporanea; i nomi di questi oggetti saranno unici, creati dinamicamente da Sql Server.
È possibile creare un indice con nome dinamico per la tabella dopo che è stato creato? Ho un caso in cui una stored procedure che utilizza tabelle temporanee può eseguire più istanze contemporaneamente e vorrei aumentare le prestazioni senza rischiare un conflitto tra oggetti con nome identico nel database tempdb. Il comando CREATE INDEX
richiede un nome indice esplicito.
Sto cercando una soluzione che non implichi SQL dinamico, solo nomi dinamici.
Hmmm ... 10 anni di lavoro con SQL Server, e non l'ho mai saputo. Ho semplicemente pensato che gli indici fossero trattati come oggetti simili ai vincoli, ma l'ho appena provato e ho verificato che non ci sono conflitti. Buona informazione! –
@JeremyHolovacs - i vincoli ottengono i metadati memorizzati in 'sys.objects', che presumo sia la ragione del requisito di unicità, ma gli indici no. –
+1 Bello, ero sotto lo stesso presupposto di @JeremyHolovacs – Yuck