SQL Server 2000
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
°емые пользователями. Они создаются на основе системных типов данных. Пользовательские типы данных часто используются, когда в нескольких таблицах необходимо хранить однотипные значения, причем гарантировать, что столбцы в таблице будут иметь одинаковый размер, тип данных и чувствительность к данным NULL. Например, с помощью пользовательского типа данных можно хранить номера и серии паспорта.
Для создания пользовательского типа данных используется системная хранимая процедура sp_addtype:
sp_addtype [ @typename = ] type. [ @phystype = ] system_data_type [ . [ @nulltype = ] "null_type" ] [ , [ @owner = ] "owner name" ]
Если необходимо сделать пользовательский тип данных доступным во всех создаваемых базах данных, добавьте этот тип в базу данных model.
Здесь используются следующие аргументы.
О type имя создаваемого типа данных. При выборе имени создаваемого типа данных необходимо следовать установленным правилам именования объектов. Имя должно быть уникальным в пределах владельца, то есть не совпадать с именами других объектов. Разные пользователи могут употреблять одинаковые имена для создаваемых объектов.
О system_data_type системный тип данных, на основе которого создается пользовательский тип данных. Можно выбрать один из следующих типов данных:
"binary(n)"Imagesmalldatetime
BitIntsmallint
"char(n)""nchar(n)" text
DatetimeNtexttinyint
DecimalNumericuniqueidentifier
"decimal[(p[,s])]" "numeric[(p[,s])]""varbinary(n)"
Float"nvarchar(n)""varchar(n)"
"float(n)"Real
Кавычки необходимы, когда помимо самого типа данных требуется указание дополнительных параметров. Аргумент п идентифицирует длину системного типа данных в пользовательском типе данных, аргумент р максимальное суммарное (до и после десятичной точки) количество цифр для числовых типов данных в пользовательском типе данных, аргумент s максимальное количество десятичных цифр после запятой в пользовательском типе данных.
Нельзя создать пользовательский тип данных на основе системного типа timestamp.
О "null _type". Значение этого аргумента определяет, будет ли пользовательский тип данных хранить значения NULL Аргумент null_type имеет тип varchar(S) и может принимать одно из трех следующих значений: NULL (разрешается хранение NULL), NOT NULL (хранение NULL запрещается) или NONULL (используется значение по умолчанию). Если аргумент null_type не указывается, то при создании пользовательского типа используется значение по умолчанию, установленное для базы данных с помощью системной хранимой процедуры sp_dboption. Текущее значение, установленное в базе данных, можно получить с помощью функции GETANSINULL
Значение аргумента null_type требуется для пользовательского типа данных только как значение по умолчанию при создании столбца таблицы. Если при создании столбца явно определено свойство NULL или NOT NULL, то значение аргумента null_type игнорируется.
О "owner_name". Определяет владельца или создателя нового типа данных. По умолчанию владельцем нового типа данных считается текущий пользователь. Параметр owner_name имеет тип данных sysname.
Например, при создании пользовательских типов данных для описания номеров факса и телефона можно использовать следующий код: ЕХЕС sp_addtype telephone, "varchar(24)", "NOT NULL" EXEC sp_addtype fax, "varchar(24)", "NULL"
Хранимая процедура sp_addtype добавляет описание типа в системную таблицу systypes текущей базы данных. В принципе, если посмотреть на эту таблицу, то можно заметить, что в ней также перечислены встроенные типы данных. То есть и типы данных, выглядящие встроенными, на уровне конкретной базы данных являются пользовательскими, но имеющими те же свойства и имена, что и встроенные. Например, выберем из таблицы systypes базы данных pubs список доступных типов данных:
SELECT name FROM systypes
Будет возвращен следующий результат:
name
image
text
uniqueidentifier
tinyint
smallint
int
smalldatetime
real
money
datetime
float
sql_variant
ntext
bit
decimal
numeric
small money
bigint
varbinary
varchar
binary
char
timestamp
nvarchar
nchar
sysname
id
tid
empid
(29 row(s) affected)
Как видно, в одной таблице перечислены и встроенные, и пользовательские типы данных (i d, ti d и emi d).
Управление правилами
Правила (rules) являются одним из средств обеспечения целостности данных, хранящихся в базе. Правила оставлены для обеспечения обратной совместимости с предыдущими версиями SQL Server. В новой версии они заменены ограничениями целостности CHECK, которые являются более мощным средством и определяются при создании таблицы. Правила же создаются как отдельные объекты, которые впоследствии связываются с конкретными полями таблиц. В этом разделе будут рассмотрены правила как самостоятельные объекты базы данных.
Для столбца таблицы можно определить только одно правило, но несколько ограничений целостности CHECK. Если для одного столбца определены ограничения целостности и правило, то будут учитываться как ограничения целостности, так и правило.
Создание правила не может выполняться в одном пакете с другими командами Transact-SQL.
Для создания правила используется следующая команда Transact-SQL: CREATE RULE rule AS condition_expression
Рассмотрим аргументы команды. О rule имя правила. При выборе имени необходимо придерживаться общих
правил именования объектов. При необходимости можно указать имя владельца.
О condition_expression логическое выражение, определяющее условие, накладываемое на значения. В качестве условия можно использовать любые логические команды, арифметические операторы, встроенные функции и предикаты (например I