J'ai le tableau suivant dans SQL ServerInsérer le numéro de la ligne courante dans la table SQL Server
CREATE TABLE [dbo].[tblTempPo](
[TempPoID] [int] IDENTITY(1,1) NOT NULL,
[guid] AS ([dbo].[GetIdentity]()),
[Qty] [int] NULL,
[MobileBrandID] [int] NULL,
[MobileID] [int] NULL
)
J'ai besoin d'insérer le numéro de ligne à la colonne guid
chaque fois qu'une nouvelle ligne est ajoutée. J'ai essayé d'utiliser la fonction suivante, mais cela ne fonctionne pas comme prévu.
ALTER FUNCTION GetIdentity()
RETURNS INT AS
BEGIN
RETURN (SELECT top 1 ROW_NUMBER() OVER(ORDER BY TempPoID asc)FROM tblTempPo)
END
La colonne est appelée 'guid' mais il stocke un' int'?!?!? Ce sera un cauchemar d'entretien sur toute la ligne !! Vous devriez toujours adhérer au ** principe de la plus petite surprise ** - si quelque chose est ** appelé ** 'guid' - tout le monde s'attendrait à ce qu'il soit de type' Guid', aussi ..... –
chaque fois qu'une rangée est ajoutée sera un goulot d'étranglement de performance énorme! ** POURQUOI ** avez-vous besoin de ** stocker ** ceci? Pourquoi ne pouvez-vous pas simplement le calculer (dans votre requête) en cas de besoin, à la volée, et être à jour tout le temps? –
Si vous voulez avoir UniqueId pour la colonne 'Guid' vous pouvez définir la valeur par défaut comme' NEWID() '. –