Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como Incremento la clave primaria???????

Estas en el tema de Como Incremento la clave primaria??????? en el foro de SQL Server en Foros del Web. Bueno. Hago esta pregunta porque busque pero no encuentro. Mi consulta es saber de que forma puedo setear en el motor del SQLServer 2005 para ...
  #1 (permalink)  
Antiguo 30/03/2010, 08:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Como Incremento la clave primaria???????

Bueno. Hago esta pregunta porque busque pero no encuentro. Mi consulta es saber de que forma puedo setear en el motor del SQLServer 2005 para que se incremente la clave primaria de forma automatica. De esa forma no tengo que programar por codigo el incremento de la clave primaria al momento de insertar datos en las tablas.
  #2 (permalink)  
Antiguo 30/03/2010, 09:06
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como Incremento la clave primaria???????

Necesitas un campo identity. Pero no es recomendable que un campo primario sea identity.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 30/03/2010, 09:15
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 4 meses
Puntos: 6
Respuesta: Como Incremento la clave primaria???????

Como que no tiene sentido que un identity sea tu clave primaria... a menos que lo que estés constuyendo sea un log de eventos para alguna aplicación por ejemplo. de otra forma tendrías que replantear tu solución.
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #4 (permalink)  
Antiguo 30/03/2010, 19:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Respuesta: Como Incremento la clave primaria???????

SI ya lo resolvi por ese medio.
Y por que no es conveniente usar esa funcion que trae el motor
  #5 (permalink)  
Antiguo 31/03/2010, 11:44
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 4 meses
Puntos: 6
Respuesta: Como Incremento la clave primaria???????

No es la funcion la que no es recomendable, es como la usas... la función es muy buena.


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #6 (permalink)  
Antiguo 31/03/2010, 16:21
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Como Incremento la clave primaria???????

bueno, el campo identity es la solucion que buscabas
CREATE TABLE estudiantes
(
dni int IDENTITY(1,1),
nombre varchar (20),
carrera varchar(30)
)

INSERT estudiantes
(nombre, carrera)
VALUES
('Rolando', 'Sistemas');

aunque ya lo resolviste, espero que a otro le sirva.
Saludos.................

Última edición por rolandofv; 01/04/2010 a las 08:49
  #7 (permalink)  
Antiguo 31/03/2010, 19:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Respuesta: Como Incremento la clave primaria???????

Que alguien me comente el tema de que forma debo usarla, porque sigo sin entender.
  #8 (permalink)  
Antiguo 31/03/2010, 20:02
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como Incremento la clave primaria???????

Identity and Primary Keys
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 01/04/2010, 08:48
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Como Incremento la clave primaria???????

bueno, te lo explicare:
IDENTITY, es una propiedad del Transact-SQL, que te crea una 'columna identidad' para una tabla. Y que se utiliza para incrementar el valor de la columna identidad, al igual que el 'auto_increment de MySQL' o que 'serial en PostgreSQL'.
sus argumentos son:

IDENTITY (valor_inicial , valor_incremento)

POR EJEMPLO: Creamos una tabla persona con el atributo 'id' de tipo identidad.

CREATE TABLE persona
(
id int IDENTITY(1,2),
dni int,
nombre varchar (20),
edad int
)
// El atributo dni, tendra como valor inicial 1, y cada vez que se haga un registro en la tabla el valor se ira incrementando de 2 en 2.

insert into persona (dni, nombre, edad)
VALUES (3971778, 'Rolando', 24);

insert into persona (dni, nombre, edad)
VALUES (6857142, 'Fernanda', 25);

select * from persona;

//El resultado sera el siguiente, y fijate el campo id.

id | dni | nombre | edad
-------------------------------------------------
1 | 3971778 | rolando | 24
3 | 6857142 | Fernanda | 25

tambien puedes revisar
http://msdn.microsoft.com/es-es/library/ms186775.aspx
  #10 (permalink)  
Antiguo 02/04/2010, 08:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Respuesta: Como Incremento la clave primaria???????

Si salta de 2 en 2 porque vos le pusiste en el campo ID que salte de 2 en 2, lo cual genera espacios vacios.

De todas formas tine que existir alguna forma de poder incrementar el valor de ID de las tablas sin realizar programacion en codigo.
Porque la solucion que utilizo es: Trae el Maximo valor de ID utilizado, incrementarlo en 1 y agregarlo al campo ID al momento de insertar datos, esto solamente con una tabla.Pero si debo insertar en multiples tablas se hace demasido complejo el codigo.

SI existe una solucion a este problema que poseeo me gustaria saberla ya qu es engorroso estar hacienbdo lo que hago por codificacion.
  #11 (permalink)  
Antiguo 25/07/2012, 17:57
 
Fecha de Ingreso: enero-2006
Mensajes: 10
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Como Incremento la clave primaria???????

Amigos, veo que el POST es antiguo, pero comento para otros que tal vez andan buscando sobre el uso de campos Identity.

Los campos tipo identity son una excelente solucion, pero deben ser muy cuidadosos al utilizarlos.

La funcionalidad de contador, puede ser muy tentador utilizarlos para identificar el numero unico de un Cliente, o de una factura, o de un comprobante fiscal, etc.

Pero este tipo de campos no fueron creados para ese uso, y explico el porque. Dependiendo del Motor de Base de datos (Sybase, MSSQL, MYSQL, etc), se puede dar casos donde de forma voluntario o involuntarias el motor debe ser reiniciado y la concurrencia de multiples conexiones puede generar casos donde el secuencial de los campos Identity sufren un incremento no esperado, generando gap's o espacios en la numeracion.
Este espacio en la numeracion puede ser faltal, si estamos utilizando el campo para la numeracion de Facturas, o comprobantes fiscales, etc.

El uso correcto de un campo identity es para poder relacionar el registro en especifico con otra tabla, de esta forma si un registro tiene un secuencial de 100, y en otra tabla se relaciona este secuencial siempre sera 100. De esta forma garantizar la integridad de los datos.

Por regla personal, yo solo ocupo campos Identity en tablas que su funcionalidad es de catalogo, y ese numero lo utilizo para relacionarlo en todas las tablas que se ocupe.

Y si necesito generar un secuencial para facturacion, o Id de cliente, prefiero generar un procedimiento almacenado en donde le envio el tipo de secuencial que necesito y me retorna el secuencial que debo insertar en la tabla. De esta forma cuando te toca que restaurar datos, ya no tienen que pelear con los campos Identity, sino que solo restauras, y actualizan la tabla de secuenciales de toda la aplicacion.

Etiquetas: clave, incremento, primaria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:06.