Табличные переменные

Долгое время в SQL сервере в качестве хранения каких-либо промежуточных данных использовались временные таблицы.
Создавались они примерно следующим образом:
create table #t1(tid int,tname nvarchar(80));


Но, начиная с 2005 версии ситуация несколько изменилась.

Появились, так называемые табличные переменные
В чем разница?

Читать дальше →

NEWID() для INT (BigInt, SmallInt) в T-SQL

По ходу работы столкнулся со следующей проблемой — необходимо было сгенерировать уникальный в пределах БД показатель типа INT. Вообще, для uniqueidentifier существет такая замечательная функция NEWID(), которая генерирует заветное значение, а вот для INT'а подобную функцию придется реализовывать самостоятельно.

Вообще, сделать подобно можно, сохранив уже сгенерированные IDшники в какую-нибудь таблицу. Но как реализовать генерацию нового значения?

Первой мыслью было использование транзакций, нахождение максимального числа с последующим его увеличением. Конечно, такой вариант тоже «прокатывает», но параноик-кун, затаившийся внутри меня, кричал о возможных таймаутах, ошибках в транзакции и прочих невкусностях.


Читать дальше →