Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Артемов Д.В. -> "Microsoft SQL Server 2000" -> 56

Microsoft SQL Server 2000 - Артемов Д.В.

Артемов Д.В. Microsoft SQL Server 2000 — М.: Издательско-торговый дом «Русская Редакция», 2001. — 576 c.
ISBN 5-7502-0154-6
Скачать (прямая ссылка): artemov.pdf
Предыдущая << 1 .. 50 51 52 53 54 55 < 56 > 57 58 59 60 61 62 .. 187 >> Следующая


Create table ##test (f1 int identity, f2 char (10))

Пользователь А Пользователь Б

Begin ton Begin tran

Insert into ##test (?) values Insert into ##test (?) values ('Test')

(Testl')

Rllback Commit

Begin tran

Insert into ##test (Q) values ('Test3') Commit

Select * from test f1 f2

3 Testl

2 Test3

(2 row(s) affected)

Как видите, значение 1 "пропало

www.books-shop.com

Microsoft SQL Server 2000, Новейшие технологии

Чтобы лучше ориентироваться в значениях, добавленных в поле с атрибутом Identity, SQL Server 2000 предлагает одну глобальную переменную и две функции. Переменная @@Identity имелась еще в версии 6.5, она видна глобально в рамках конкретной сессии и не привязана к какой-либо таблице, значение берется по результатам последнего выполненного выражения, цифру в поле с атрибутом Identity. Функция SCOPEIDENTITY возвращает последнее значение, введенное в поле с атрибутом Identity в рамках конкретного набора команд (Scope). Так, при выполнении команд:

INSERT identity.test VALUES Сааа') GO

INSERT identityjestl VALUES ('ааа')

SELECT (gXSIDENTITY '©©Identity', IDENT_CURRENT(' identity_test1 ' ) 'Ident Current',

SC0PE_IDENTITY() 'scope_identity'

GO

SCOPEIDENTITY покажет значение, введенное в таблицу iden-tity_test1.

Третья функция — IDENTCURRENT — не ограничена ни областью видимости, ни сессией: она привязана к конкретной таблице и единственная из трех имеет обязательный параметр — имя таблицы: IDENT_C U RRENT(' identity_test').

При указании ограничений, таких как Primary Key и Unique, автоматически создаются соответствующие индексы. Ограничение Primary Key по умолчанию создается как уникальный кластерный индекс; указание ограничения Unique приводит к созданию уникального некластерного индекса.

Синтаксис команды создания новой таблицы включает большое количество параметров, наиболее интересны из них следующие. • columnname AS computed_column_expression Запись в таблице

может включать виртуальное, полученное расчетным путем поле

(определяется аргументом AS

pression). Вычисляемые поля не хранятся в таблице, но динамически вычисляются на основании других полей в той же записи. В состав выражения можно включать имя другого поля (кроме вычисляемого), константы, функции, переменные и любые их комбинации, связанные одним или более операторов. В качестве выражения нельзя использовать вложенные выражения SELECT. Вычисляемые поля можно применять при построении запросов, включать в предложения WHERE, ORDER BY и других случаях,

www.books-shop.com

ГЛАВА 3: Управление базами данных -j 49

www.books-shop.com

стандартных выражений. Вычисляемые поля нельзя использовать для построения вторичных индексов и ограничений DEFAULT. В отличие от версии 7.0 вычисляемые поля могут индексироваться. Ограничения на индексацию таких полей мы рассмотрим в разделе, посвященном индексам. Вычисляемое поле не может входить в список полей команд INSERT или UPDATE.

• [ONfilegroup] Этим аргументом таблицу можно принудительно поместить в определенную группу файлов. Точно так же в группу файлов может быть помещен индекс, создаваемый командой CREATE INDEX или предложением PRIMARY KEY или UNIQUE в команды CREATE TABLE. Если имя группы файлов не указано, индекс создается в той же группе, к которой принадлежит таблица. Среди имеющихся групп файлов одна всегда используется для размещения новых объектов по умолчанию. Если имя группы прямо не указано или если использовано указание DEFAULT, новая таблица будет размещена именно в этой группе файлов.

• TEXTIMAGEON filegroup Если таблица включает поля типа Text или Image, этот атрибут позволяет поместить данные для этих полей в соответствующую группу файлов. Точно так же, как и с «обычными» данными, можно указать DEFAULT, и будет задействована соответствующая группа файлов.

• ROWGUIDCOL Указывает, что соответствующее поле будет глобально уникальным идентификатором записи. Таковым может служить только одно поле в таблице, оно должно иметь тип unique-identifier (описание этого типа данных см. ниже) и может получить подобный атрибут.

• NOT FOR REPLICATION Это предложение определяет, как поле с типом IDENTITY будет обработано в процессе репликации данных. Используйте его для того, чтобы на подписчике полю не было присвоено новое значение.

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

Новые типы данных

У SQL Server 2000 появилось не так много новых типов данных, как это было в версии 7.0, но какие! Один SQLVariant чего стоит.

SQL Variant

Если Вам приходилось программировать на VBScript, Вы знаете, что он поддерживает только один тип данных — Variant. При присвоении

150

Microsoft SQL Server 2000, Новейшие технологии

переменной типа Variant конкретного значения VBScript пытается определить так называемый «подтип», конкретно описывающий тип данных, хранящихся в переменной. Хотя такая вольность часто оборачивается большими проблемами при программировании, поскольку приходится писать дополнительный код для приведения данных к нужному типу или проверки, у программиста есть возможность в одну переменную поместить как численные данные, так и строку или дату. У SQL Server 2000 появился аналогичный тип — SQL_ variant. Поле такого типа способно хранить любую информацию. При размещении данных в поле SQL Server вместе с собственно данными сохраняет еще набор метаданных, в числе которых сведения о базовом типе. Создадим таблицу и посмотрим, как это все работает.
Предыдущая << 1 .. 50 51 52 53 54 55 < 56 > 57 58 59 60 61 62 .. 187 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100