¿Qué es una secuencia?
Para las matemáticas una secuencia o una sucesión es un grupo de números o de otros elementos matemáticos que forman un conjunto ordenado. Un ejemplo de secuencia matemática es la sucesión de números impares, que resulta infinita: 1, 3, 5, 7, 9…
Crear la secuencia
Antes que otra cosa crearemos la base de datos de ejemplo y posterior a eso sobre la base de datos que vamos a crear, crearemos la secuencia.
go
use pruebas
go
create sequence personaseq as
int
start with 1001
increment by 1
create table persona (
id int primary key identity,
nombre varchar(max),
apellidop varchar(max),
apellidom varchar(max),
secuencia int default (next value for
[personaseq]) not
null).
GO
insert into persona (nombre, apellidop, apellidom) values ('Emmanuel', 'Urias', 'Robles')
insert into persona (nombre, apellidop, apellidom) values ('Luis', 'Gonzalez', 'Hernandez')
insert into persona (nombre, apellidop, apellidom) values ('Maria', 'Hernandez', 'Pérez')
Ejemplo 2: Crear una secuencia que comience con el número 1001 y se vaya incrementando de 1 en 1 hasta el 1005
create sequence personaseq as
int
start with 1001
increment by 1
maxvalue 1005
no cycle
create table persona (
id int primary key identity,
nombre varchar(max),
apellidop varchar(max),
apellidom varchar(max),
secuencia int default (next value for
[personaseq]) not
null)
insert into persona (nombre, apellidop, apellidom) values ('Emmanuel', 'Urias', 'Robles')
insert into persona (nombre, apellidop, apellidom) values ('Luis', 'Gonzalez', 'Hernandez')
insert into persona (nombre, apellidop, apellidom) values ('Maria', 'Hernandez', 'Pérez')
insert into persona (nombre, apellidop, apellidom) values ('Laura', 'López', 'Márquez')
insert into persona (nombre, apellidop, apellidom) values ('Julián', 'Velazquez', 'Carrillo')
select * from persona
Como vemos la secuencia esta correcta, pero ya llegó a su límite máximo, ¿Qué pasará si queremos ingresar un nuevo valor?
insert into persona (nombre, apellidop, apellidom) values ('Margarita', 'Chavez', 'Herrera')
Msg 11728, Level 16, State 1, Line 26
The sequence object 'personaseq' has reached its
minimum or maximum value. Restart the sequence object to allow new values to be
generated.
create sequence personaseq as
int
start with 1001
increment by 1
maxvalue 1005
minvalue 1001
cycle
go
Como podemos observar, se establecen valores máximos, mediante el parámetro maxvalue, también le indicamos a la secuencia que será ciclica, es decir, al llegar al máximo la serie se repite comenzando por el minvalue
create table persona (
id int primary key identity,
nombre varchar(max),
apellidop varchar(max),
apellidom varchar(max),
secuencia int default (next value for
[personaseq]) not
null)
insert into persona (nombre, apellidop, apellidom) values ('Emmanuel', 'Urias', 'Robles')
insert into persona (nombre, apellidop, apellidom) values ('Luis', 'Gonzalez', 'Hernandez')
insert into persona (nombre, apellidop, apellidom) values ('Maria', 'Hernandez', 'Pérez')
insert into persona (nombre, apellidop, apellidom) values ('Laura', 'López', 'Márquez')
insert into persona (nombre, apellidop, apellidom) values ('Julián', 'Velazquez', 'Carrillo')
insert into persona (nombre, apellidop, apellidom) values ('Margarita', 'Chavez', 'Herrera')
Como vemos la secuencia esta funcionando correctamente, llega a su valor máximo y al ingresar un nuevo valor, se reinicia al valor mínimo configurado.
Modificar una secuencia
alter sequence personaseq
restart with 1005
increment by 2
maxvalue 1010
minvalue 1005
cycle
go
Eliminar una sentencia
drop sequence personaseq
Referencias
Definicion.de. (15 de 12 de 2020). Obtenido de
https://definicion.de/secuencia/
Microsoft. (15 de 12 de 2020). Microsoft Docs.
Microsoft. (15 de 12 de
2020). Microsoft Docs. Obtenido de https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-sequence-transact-sql?view=sql-server-ver15
Salmun, N. (15 de 12 de
2020). Teknoda Tips. Obtenido de
http://www.teknodatips.com.ar/as400/247-que-es-secuencia-sql-en-db2-as400.html
No hay comentarios.:
Publicar un comentario