Sv Community El Salvador
Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: renji en diciembre 18, 2008, 09:51:57 am
-
Hola amigos de SVC
tengo una pregunta como se puede hacer un campo autoincrementables
Ejm.
tengo la el campo empleado_codigo y cada ves q le de un INSERT baya ingrementando :embarassed: ayuda gracias
Saludos.
-
Pues segun me acuerdo yo eso se define cuando creas la tabla, luego solo vas insertanto los registros y automaticamente deberia de ir incrementando (1, 2, 3... N)
Hechate una googleada ;)
http://www.google.com.sv/search?hl=es&lr=lang_es&safe=off&sa=X&oi=spell&resnum=1&ct=result&cd=1&q=autoincrement+en+sql+2005&spell=1
-
Pues segun me acuerdo yo eso se define cuando creas la tabla, luego solo vas insertanto los registros y automaticamente deberia de ir incrementando (1, 2, 3... N)
mmmmmm pero como ya la cree y no hay una opcion en las propiedades de SQL no se digo y por codigo como seria
-
Que tipo de servidor de base de datos? MySQL, Oracle, etc, etc...?
-
mmmmmm pero como ya la cree y no hay una opcion en las propiedades de SQL no se digo y por codigo como seria
con codigo podria ser asi:
INSERT INTO tabla1
(
CODIGO,
NOMBRE
)
VALUES
(
SELECT COALESCE(MAX(codigo),0) + 1 FROM tabla1,
'renji'
)
lo que hace es tomar el maximo codigo y sumarle 1, para crear el nuevo codigo, coalesce te retorna cero si el primer valor es nulo (max(codigo)) esto por si no hay nada en esa tabla y al jalar max(codigo) no venga nulo y se le pueda sumar 1, en ese caso el codigo que insertaria es 1, luego 2, luego 3 y asi.......
si ocupas ORACLE, sustituye COALESCE por NVL
edit: lo acabo de probar en oracle y de ambas formas sirve XD
-
con codigo podria ser asi:
INSERT INTO tabla1
(
CODIGO,
NOMBRE
)
VALUES
(
SELECT COALESCE(MAX(codigo),0) + 1 FROM tabla1,
'renji'
)
lo que hace es tomar el maximo codigo y sumarle 1, para crear el nuevo codigo, coalesce te retorna cero si el primer valor es nulo (max(codigo)) esto por si no hay nada en esa tabla y al jalar max(codigo) no venga nulo y se le pueda sumar 1, en ese caso el codigo que insertaria es 1, luego 2, luego 3 y asi.......
si ocupas ORACLE, sustituye COALESCE por NVL
edit: lo acabo de probar en oracle y de ambas formas sirve XD
SQL 2005
-
probalo con coalesce que es la alternativa a sql del nvl de oracle, pense que era exclusivo de sql asi como nvl para oracle, pero en oracle tambien sirve
-
ya el sql ya tra esa funcion
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
)
para insertar
INSERT new_employees
(fname, minit, lname)
VALUES
('Karin', 'F', 'Josephs')
no envias el campo autoincremantable el solo toma valor...
-
.....
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
....
:) los campos identity son tu solución ....
aquí podes encontrar ayuda de como utilizarlos..
http://www.helpdna.net/sqlserver_faq_06_autonumericos_identity.htm (http://www.helpdna.net/sqlserver_faq_06_autonumericos_identity.htm)
-
esas opciones no aparecen x_x x_x x_x
http://img150.imageshack.us/my.php?image=dibujofw4.jpg (http://img150.imageshack.us/my.php?image=dibujofw4.jpg)
-
ahhhhh no te creo.... :shock:
dejame ver....
(http://img156.imageshack.us/img156/733/dibujofw4xl9.jpg)
tambíen ojo con el tipo de datos.... en un tipo varchar que incremento esperas?¿
-
:D :D :D ok gracias :thumbsup:
-
Hola puedes crear una consulta en la tabla donde lo quieras incrementar en 1 esto puede servirte
creas una variable idincremento luego a la hora de insertar los valores inserta idincremento donde corresponde espero ayude :thumbsup:
String url = "jdbc:mysql://localhost/comercial?user=root&password=root";
Connection con;
String cade;
cade="SELECT max(idcuotas) as maximoidproducto FROM `cuotas`";
Statement stmt;
try {
con = DriverManager.getConnection(url, "root", "root");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(cade);
while(rs.next()){
int valor=(rs.getInt(1));
idincremento=valor+1;
}
stmt.close();
con.close();
}
catch(SQLException ex) {
JOptionPane.showMessageDialog(this,ex,"ERROR",JOptionPane.ERROR_MESSAGE);
}
-
Usa un campo Identity por lo general yo los usos con campos decimales o numeric