Je dois modifier le type de données d'une colonne dans SQL Server. Alors, quelles sont les contraintes à faire?Modification du type de données de colonne dans SQL Server
Je sais que je dois supprimer l'index et d'autres contraintes?
Dois-je supprimer non null check?
Quelles autres choses dois-je vérifier avant de modifier le type de données?
Je dois supprimer les contraintes et modifier la table, puis ajouter à nouveau les contraintes.
Est-ce la bonne façon de le faire?
DROP INDEX UX_1_COMPUTATION ON dbo.Computation
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25)
CREATE UNIQUE INDEX UX_1_COMPUTATION ON dbo.Computation (ComputationID);
Ici UX_1_COMPUTATION
est le nom d'index unique, Computation
est le nom de la table et ComputationID
est le nom de la colonne.
Est-ce correct?
Update
Donc, s'il y a un composite index
où il y a plus d'une colonne impliqués, Comment je traite avec elle? Ces index contiennent une colonne de clé primaire avec des colonnes de clé non primaire.
Lorsque j'ai essayé d'exécuter l'instruction suivante
DROP INDEX UX_2_COMPUTATION ON dbo.Computation
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25)
CREATE UNIQUE INDEX UX_2_COMPUTATION ON dbo.Computation (ComputationID , ComputeGuid);
Il jette l'exception suivante
SQL DROP INDEX UX_2_COMPUTATION
ON dbo.Computation
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(10) Not Null
CREATE INDEX UX_2_COMPUTATION
ON dbo.Computation (ComputationID , ComputeGuid): The object
'PK_Computation' is dependent on column 'ComputationID '.:
Caused By: Error executing SQL DROP INDEX UX_2_COMPUTATION
ON dbo.Computation
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(10) Not Null
CREATE INDEX UX_2_COMPUTATION
ON dbo.Computation (ComputationID , ComputeGuid): The object
'PK_Computation' is dependent on column 'ComputationID '.:
Caused By: The object 'PK_Computation' is dependent on column 'ComputationID '.
Merci,
-Sam
Il serait utile de savoir ce que vous devez changer de et quoi? Quel est le type avant - qu'est-ce que c'est censé être après? Cette modification va créer une colonne NVARCHAR (25) '** Nullable ** - c'est ce que vous voulez? –
@marc_sIts une colonne non nulle. J'ai besoin de créer une colonne non null – Sam
Donc, il devrait être comme 'ALTER TABLE dbo.Computation ALTER COLUMN ComputationID NVARCHAR (25) Non null' droite? et il n'y a pas de problème avec la syntaxe de l'index? – Sam