Partager via


sp_addtype (Transact-SQL)

S'applique à : SQL Server

Crée un type de données alias.

Important

Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez CREATE TYPE à la place.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addtype
    [ @typename = ] N'typename'
    , [ @phystype = ] N'phystype'
    [ , [ @nulltype = ] 'nulltype' ]
    [ , [ @owner = ] N'owner' ]
[ ; ]

Arguments

[ @typename = ] N’typename'

@typename est sysname, sans valeur par défaut.

Nom du type de données alias. Les noms de types de données d’alias doivent respecter les règles relatives aux identificateurs et doivent être uniques dans chaque base de données. type sysname, sans valeur par défaut.

[ @phystype = ] N’phystype'

Type de données physique ou SQL Server fourni, sur lequel le type de données alias est basé. @phystype est sysname, sans valeur par défaut et peut être l’une des valeurs suivantes :

  • bigint, int, smallint et tinyint
  • binary, varbinary(n) et image
  • bit
  • char(n), nchar(n), varchar(n), nvarchar(n), **text et ntext
  • datetime et smalldatetime
  • decimal(s, P) et numeric(s, P)
  • float et real
  • money et smallmoney
  • sql_variant
  • uniqueidentifier

Les guillemets sont requis autour de tous les paramètres qui contiennent des espaces vides incorporés ou des marques de ponctuation. Pour plus d’informations sur les types de données disponibles, consultez Types de données.

  • n

    Entier non négatif qui indique la longueur du type de données choisi.

  • P

    Entier non négatif qui indique le nombre total maximal de chiffres décimaux pouvant être stockés, à la fois à gauche et à droite de la virgule décimale. Pour plus d’informations, consultez décimale et numérique.

  • s

    Entier non négatif qui indique le nombre maximal de chiffres décimaux pouvant être stockés à droite de la virgule décimale, et doit être inférieur ou égal à la précision. Pour plus d’informations, consultez décimale et numérique.

[ @nulltype = ] 'nulltype'

Indique la manière dont le type de données alias gère les valeurs NULL. @nulltype est varchar(8), avec une valeur par défaut NULL, et doit être placé entre guillemets simples ('NULL', 'NOT NULL'ou 'NONULL').

Si @nulltype n’est pas défini explicitement, il est défini sur la valeur nullabilité par défaut actuelle. Utilisez la GETANSINULL fonction système pour déterminer la valeur nullabilité par défaut actuelle. Cela peut être ajusté à l’aide de l’instruction SET ou ALTER DATABASE. La possibilité de valeurs NULL doit être définie explicitement. Si @phystype est bit et que @nulltype n’est pas spécifié, la valeur par défaut est NOT NULL.

Remarque

Le paramètre @nulltype définit uniquement la valeur nullabilité par défaut pour ce type de données. Si la possibilité d'utiliser des valeurs NULL est explicitement définie quand le type de données alias est utilisé lors de la création de la table, elle est prioritaire sur la possibilité de valeurs NULL actuellement définie. Pour plus d’informations, consultez ALTER TABLE et CREATE TABLE.

[ @owner = ] N’owner'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Jeu de résultats

Aucune.

Notes

Un nom de type de données alias doit être unique dans la base de données. Cependant, plusieurs types de données alias portant des noms différents peuvent avoir la même définition.

L’exécution sp_addtype crée un type de données alias qui apparaît dans l’affichage sys.types catalogue pour une base de données spécifique. Si le type de données alias doit être disponible dans toutes les nouvelles bases de données définies par l’utilisateur, ajoutez-le à model. Une fois qu’un type de données d’alias est créé, vous pouvez l’utiliser dans CREATE TABLE ou ALTER TABLE, ainsi que lier les valeurs par défaut et les règles au type de données alias. Tous les types de données d’alias scalaires créés à l’aide sp_addtype sont contenus dans le dbo schéma.

Tous les types de données alias héritent du classement par défaut de la base de données. Les classements des colonnes et variables des types d’alias sont définis dans transact-SQL CREATE TABLE, ALTER TABLEet DECLARE @<local_variable> les instructions. La modification du classement par défaut de la base de données s’applique uniquement aux nouvelles colonnes et variables du type ; elle ne modifie pas le classement des classements existants.

Important

À des fins de compatibilité descendante, le rôle de base de données publique reçoit automatiquement REFERENCES l’autorisation sur les types de données d’alias créés à l’aide sp_addtypede . Notez que lorsque des types de données d’alias sont créés à l’aide de l’instruction CREATE TYPE au lieu de sp_addtype, aucune telle allocation automatique ne se produit.

Les types de données d’alias ne peuvent pas être définis à l’aide des types de données SQL Server timestamp, table, xml, varchar(max), nvarchar(max)ou varbinary(max).

autorisations

Nécessite l’appartenance au rôle de base de données fixe db_owner ou db_ddladmin .

Exemples

R. Créer un type de données alias qui n’autorise pas les valeurs Null

L’exemple suivant crée un type de données alias nommé ssn (numéro de sécurité sociale) basé sur le type de données varchar fourni par SQL Server. Le ssn type de données est utilisé pour les colonnes contenant des numéros de sécurité sociale à 11 chiffres (999-99-9999). La colonne ne peut pas être NULL.

varchar(11) est placé entre guillemets simples, car il contient une ponctuation (parenthèses).

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

B. Créer un type de données d’alias qui autorise les valeurs Null

L'exemple suivant crée un type de données alias (basé sur datetime) appelé birthday, qui autorise les valeurs NULL.

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

C. Créer des types de données d’alias supplémentaires

L’exemple suivant crée deux types de données alias supplémentaires, telephone et fax, pour les numéros de téléphone et de télécopie nationaux et internationaux.

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