14 - Otras características del atributo Identity |
Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos". 1- Elimine la tabla,si existe: if object_id('medicamentos') is not null drop table medicamentos; 2- Cree la tabla con un campo "codigo" que genere valores secuenciales automáticamente comenzando en 10 e incrementándose en 1: create table medicamentos( codigo integer identity(10,1), nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer ); 3- Ingrese los siguientes registros: insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); 4- Verifique que SQL Server generó valores para el campo "código" de modo automático: select *from medicamentos; 5- Intente ingresar un registro con un valor para el campo "codigo". 6- Setee la opción "identity_insert" en "on" 7- Ingrese un nuevo registro sin valor para el campo "codigo" (no lo permite): insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100); 8- Ingrese un nuevo registro con valor para el campo "codigo" repetido. 9- Use la función "ident_seed()" para averiguar el valor de inicio del campo "identity" de la tabla "medicamentos" 10- Emplee la función "ident_incr()" para saber cuál es el valor de incremento del campo "identity" de "medicamentos"Ver solución
if object_id('medicamentos') is not null drop table medicamentos; create table medicamentos( codigo integer identity(10,1), nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer ); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); select *from medicamentos; insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Amoxilina 500','Bayer',15.60,100); set identity_insert medicamentos on; insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100); insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(10,'Amoxilina 500','Bayer',15.60,100); select ident_seed('medicamentos'); select ident_incr('medicamentos');
Un videoclub almacena información sobre sus películas en una tabla llamada "peliculas". 1- Elimine la tabla si existe: if object_id('peliculas') is not null drop table peliculas; 2- Créela definiendo un campo "codigo" autoincrementable que comience en 50 y se incremente en 3: create table peliculas( codigo int identity (50,3), titulo varchar(40), actor varchar(20), duracion int ); 3- Ingrese los siguientes registros: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); 4- Seleccione todos los registros y verifique la carga automática de los códigos: select *from peliculas; 5- Setee la opción "identity_insert" en "on" 6- Ingrese un registro con valor de código menor a 50. 7- Ingrese un registro con valor de código mayor al último generado. 8- Averigue el valor de inicio del campo "identity" de la tabla "peliculas". 9- Averigue el valor de incremento del campo "identity" de "peliculas". 10- Intente ingresar un registro sin valor para el campo código. 11- Desactive la opción se inserción para el campo de identidad. 12- Ingrese un nuevo registro y muestre todos los registros para ver cómo SQL Server siguió la secuencia tomando el último valor del campo como referencia.
if object_id('peliculas') is not null drop table peliculas; create table peliculas( codigo int identity (50,3), titulo varchar(40), actor varchar(20), duracion int ); insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); select *from peliculas; set identity_insert peliculas on; insert into peliculas (codigo,titulo,actor,duracion) values(20,'Mision imposible 2','Tom Cruise',120); insert into peliculas (codigo, titulo,actor,duracion) values(80,'La vida es bella','zzz',220); select ident_seed('peliculas'); select ident_incr('peliculas'); insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90); set identity_insert peliculas off; insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90); select *from peliculas;