sp_addtype (Transact-SQL)

Erstellt einen Aliasdatentyp.

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen CREATE TYPE.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_addtype [ @typename = ] type, 
    [ @phystype = ] system_data_type 
    [ , [ @nulltype = ] 'null_type' ] ;

Argumente

  • [ @typename= ] type
    Der Name des Aliasdatentyps. Namen von Aliasdatentypen müssen den Regeln für Bezeichner entsprechen und in jeder Datenbank eindeutig sein. type ist vom Datentyp sysname und hat keinen Standard.

  • [ @phystype=] system_data_type
    Der physische oder von SQL Server bereitgestellte Datentyp, auf dem der Aliasdatentyp basiert. system_data_type ist vom Datentyp sysname und hat keinen Standard. Die folgenden Werte sind möglich:

    bigint

    binary(n)

    bit

    char(n)

    datetime

    decimal

    float

    image

    int

    money

    nchar(n)

    ntext

    numeric

    nvarchar(n)

    real

    smalldatetime

    smallint

    smallmoney

    sql_variant

    text

    tinyint

    uniqueidentifier

    varbinary(n)

    varchar(n)

    Alle Parameter, die Leerzeichen oder Satzzeichen enthalten, müssen in einfachen Anführungszeichen stehen. Weitere Informationen zu den verfügbaren Datentypen finden Sie unter Datentypen (Transact-SQL).

  • n
    Eine nicht negative ganze Zahl, die die Länge für den ausgewählten Datentyp angibt.

  • P
    Eine nicht negative ganze Zahl, die die maximale Anzahl der Dezimalstellen angibt, die vor und nach dem Dezimalzeichen gespeichert werden können. Weitere Informationen finden Sie unter decimal und numeric (Transact-SQL).

  • s
    Eine nicht negative ganze Zahl, die die maximale Anzahl der Dezimalstellen angibt, die nach dem Dezimalzeichen gespeichert werden können. Diese Zahl muss kleiner oder gleich der Gesamtzahl der Stellen sein. Weitere Informationen finden Sie unter decimal und numeric (Transact-SQL).

  • [ @nulltype = ] 'null_type'
    Gibt an, wie der Aliasdatentyp Nullwerte behandelt. null_type ist vom Datentyp varchar(8), hat den Standard NULL und muss in einfachen Anführungszeichen stehen ('NULL', 'NOT NULL' oder 'NONULL'). Wenn Sie null_type nicht explizit mit sp_addtype definieren, wird die aktuelle Standard-NULL-Zulässigkeit festgelegt.Verwenden Sie die GETANSINULL-Systemfunktion, um die aktuelle Standard-NULL-Zulässigkeit zu ermitteln. Diese kann mithilfe der SET-Anweisung oder ALTER DATABASE angepasst werden. Die NULL-Zulässigkeit sollte explizit definiert werden. Wenn @phystype vom Datentyp bit ist und @nulltype nicht angegeben wurde, lautet der Standardwert NOT NULL.

    HinweisHinweis

    Der null_type-Parameter definiert nur die Standard-NULL-Zulässigkeit für diesen Datentyp.Wenn der Aliasdatentyp beim Erstellen der Tabelle verwendet und die NULL-Zulässigkeit explizit definiert wurde, hat diese Vorrang vor der definierten NULL-Zulässigkeit. Weitere Informationen finden Sie unter ALTER TABLE (Transact-SQL) und CREATE TABLE (Transact-SQL).

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Keine

Hinweise

Der Name eines Aliasdatentyps muss in der Datenbank eindeutig sein, aber Aliasdatentypen mit unterschiedlichen Namen können dieselbe Definition aufweisen.

Durch Ausführen von sp_addtype wird ein Aliasdatentyp erstellt, der in der sys.types-Katalogsicht für eine bestimmte Datenbank angezeigt wird. Muss der Aliasdatentyp in allen neuen benutzerdefinierten Datenbanken verfügbar sein, fügen Sie ihn zu model hinzu. Nach der Erstellung eines Aliasdatentyps können Sie diesen mit CREATE TABLE oder ALTER TABLE verwenden sowie Standards und Regeln an den Aliasdatentyp binden. Alle skalaren Aliasdatentypen, die mithilfe von sp_addtype erstellt wurden, sind im dbo-Schema enthalten.

Aliasdatentypen erben die Standardsortierung der Datenbank. Die Sortierungen der Spalten und Variablen von Aliastypen sind in den Transact-SQL-Anweisungen CREATE TABLE, ALTER TABLE und DECLARE @local\_variable definiert.Eine Änderung der Standardsortierung der Datenbank gilt nur für neue Spalten und Variablen des Typs; sie wirkt sich nicht auf die Sortierung bereits vorhandener Spalten und Variablen aus.

SicherheitshinweisSicherheitshinweis

Aus Gründen der Abwärtskompatibilität wird der public-Datenbankrolle automatisch die REFERENCES-Berechtigung für Aliasdatentypen erteilt, die mithilfe von sp_addtype erstellt wurden. Wurden die Aliasdatentypen jedoch mithilfe der CREATE TYPE-Anweisung anstelle von sp_addtype erstellt, wird die Berechtigung nicht automatisch erteilt.

Aliasdatentypen können nicht mithilfe der Datentypen SQL Servertimestamp, table, xml, varchar(max), nvarchar(max) oder varbinary(max) definiert werden.

Berechtigungen

Setzt die Mitgliedschaft in der festen Datenbankrolle db_owner oder db_ddladmin voraus.

Beispiele

A. Erstellen eines Aliasdatentyps, der keine NULL-Werte zulässt

Im folgenden Beispiel wird ein Aliasdatentyp namens ssn (Social Security Number, Sozialversicherungsnummer) erstellt, der auf dem von SQL Server bereitgestellten varchar-Datentyp basiert. Der ssn-Datentyp wird für Spalten mit 11-stelligen Sozialversicherungsnummern verwendet (999-99-9999). Diese Spalte darf nicht den Wert NULL aufweisen.

Beachten Sie, dass varchar(11) in einfachen Anführungszeichen steht, da es Satzzeichen (Klammern) enthält.

USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO

B. Erstellen eines Aliasdatentyps, der NULL-Werte zulässt

Im folgenden Beispiel wird ein Aliasdatentyp (basierend auf datetime) namens birthday erstellt, der NULL-Werte zulässt.

USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';

C. Erstellen zusätzlicher Aliasdatentypen

Im folgenden Beispiel werden zwei zusätzliche Aliasdatentypen, telephone und fax, für nationale und internationale Telefon- und Faxnummern erstellt.

USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO