Quel est l'équivalent du RowID d'Oracle dans SQL Server ?
Réponses
Trop de publicités?J'ai pris cet exemple à partir de l'exemple MS SQL et vous pouvez voir que l'@ID peut être interchangé avec un entier ou un varchar ou autre. C'est la même solution que je cherchais, donc je la partage. Profitez-en !
-- UPDATE statement with CTE references that are correctly matched.
DECLARE @x TABLE (ID int, Stad int, Value int, ison bit);
INSERT @x VALUES (1, 0, 10, 0), (2, 1, 20, 0), (6, 0, 40, 0), (4, 1, 50, 0), (5, 3, 60, 0), (9, 6, 20, 0), (7, 5, 10, 0), (8, 8, 220, 0);
DECLARE @Error int;
DECLARE @id int;
WITH cte AS (SELECT top 1 * FROM @x WHERE Stad=6)
UPDATE x -- cte is referenced by the alias.
SET ison=1, @id=x.ID
FROM cte AS x
SELECT *, @id as 'random' from @x
GO
Vous pouvez obtenir le ROWID en utilisant les méthodes indiquées ci-dessous :
Créer une nouvelle table avec un champ d'incrémentation automatique.
Utilisez la fonction analytique Row_Number pour obtenir la séquence en fonction de vos besoins. Je préfère cette méthode parce qu'elle est utile dans les situations où vous voulez obtenir le numéro de ligne de manière ascendante ou descendante pour un champ spécifique ou une combinaison de champs.
Sample:Row_Number() Over(Partition by Deptno order by sal desc)
L'exemple ci-dessus vous donnera le numéro de séquence basé sur le salaire le plus élevé de chaque département. La partition par est facultative et vous pouvez la supprimer selon vos besoins.
Veuillez essayer
select NEWID()
Fuente: https://docs.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql
- Réponses précédentes
- Plus de réponses