Je possède ce type utilisateur que je voudrais ajouter une clé primaire ou index:Comment ajouter un index ou une clé primaire à un type de table défini par l'utilisateur dans SQL Server?
IF NOT EXISTS (
SELECT *
FROM sys.types st
JOIN sys.schemas ss
ON st.schema_id = ss.schema_id
WHERE st.name = N'DistCritGroupData'
AND ss.name = N'dbo')
BEGIN
CREATE TYPE [dbo].[DistCritGroupData] AS TABLE
(
[DistCritTypeId] [int] NOT NULL,
[ItemAction] [int] NOT NULL,
[ObjectId] [int] NOT NULL,
[OperatorType] [int] NOT NULL
);
END;
GO
Je voudrais essentiellement soit ajouter une clé primaire ou un index ordonné en clusters. J'ai essayé ceci mais j'obtiens l'erreur "Impossible de trouver l'objet" dbo.DistCritGroupData "parce qu'il n'existe pas ou que vous n'avez pas d'autorisations.
CREATE TYPE [dbo].[DistCritGroupData] AS TABLE
(
[DistCritTypeId] [int] NOT NULL,
[ItemAction] [int] NOT NULL,
[ObjectId] [int] NOT NULL,
[OperatorType] [int] NOT NULL,
CONSTRAINT [DistCritGroupData0] PRIMARY KEY CLUSTERED
(
[DistCritTypeId] ASC
)
);
Je vois dans l'Explorateur d'objets sur mon type de table défini par l'utilisateur qu'il ya des sections pour les « Colonnes », « Keys », « contraintes » et « Index ». Les questions sont: comment puis-je ajouter une clé ou un index?
La "clé primaire de la table xyz" est-elle un identifiant valide? Il a besoin d'un nom pour sys.objects .. – gbn
@gbn Il est absolument unique et vous pouvez évaluer le nom généré unique à partir des tables système, si vous le devez. –
Vous avez besoin d'une clé ou d'une contrainte nommée lorsque vous utilisez le contrôle de code source. Ensuite, les clés nommées ou les contraintes sont très utiles. – eghetto