sql server - Esquema de base de datos, autoincremento
sql-server (1)
Iría con una columna calculada para
PhraseVersion
, que tomará el recuento de filas con el mismo
PhraseID
e
Id
inferiores o iguales a la fila actual.
Para hacer eso, debe crear un UDF para calcular la PhraseVersion:
CREATE FUNCTION dbo.GetPhraseVersion (
@PhraseId int,
@id int
)
RETURNS INT
AS
BEGIN
RETURN (
SELECT COUNT(*)
FROM T
WHERE PhraseId = @PhraseId
AND Id <= @id
)
END
GO
Luego, cree la tabla con la columna calculada:
CREATE TABLE T
(
id int identity(1,1),
PhraseId int,
PhraseVersion as dbo.GetPhraseVersion(PhraseId, id)
)
GO
Ahora para la prueba, inserte 4 registros:
INSERT INTO T (PhraseId) VALUES(1),(1),(1),(2)
Seleccionar:
SELECT *
FROM T
Resultados:
id PhraseId PhraseVersion
1 1 1
2 1 2
3 1 3
4 2 1
Pregunta de la base de datos aquí. ¿Es posible hacer un autoincremento en una identificación secundaria o una identificación de terceros? Necesito hacer algo basado en la versión, así que imagina esto:
ID Phrase PhraseID PhraseVersion
1 "" 1 1
2 "" 1 2
3 "" 1 3
4 "" 2 1
PhraseID puede ser el mismo número, cuando se agrega a la base de datos. Si el PhraseID existe, quiero que PhraseVersion se incremente automáticamente en número. Si el PhraseID no existe, quiero que PhraseVersion comience de nuevo, contando desde 1.
Yo esto posible?