Principales respuestas
código con letra y numero consecutivo

Pregunta
-
Hola a todos! tengo esta inquietud espero que alguién pueda ayudarme y desde ya gracias por el apoyo.
Tengo una Tabla "Vendedor"
Los campos Vendedor son: idVendedor, nomVendedor, apelVendedor, telefono, sexo
Lo que quiero hacer es asignar una letra al idVendedor con la letra "V" y seguido de numero que se vaya incrementando consecutivamente y quede de la siguiente manera Por ejemplo: V001,v002,V003.......
Y mi otra consulta es que también en el sexo solo me permita ingresar F o MEspero que alguién me pueda ayudar.
Saludos a todos y desde ya muchas gracias
Respuestas
-
"grandioso, solo que al momento de poner llave primaria no puede quedar el codigodeVendedor o como podria hacer ???"
De poder se puede pero no sería lo mas recomendable , lo mas recomendable sería que utilizes números enteros como tu llave primaria , como es el caso de la columna identity
asi podrías crear la llave que deseas
Create Table #Vendedor ( iCorrelativo Int Identity(1,1), iCodigoVendedor As 'V'+RIGHT('000'+RTRIM(iCorrelativo) ,3)PERSISTED NOT NULL , vNombreVendedor Varchar(100) ) Insert Into #Vendedor Values('Vendedor 1') Insert Into #Vendedor Values('Vendedor 2') Insert Into #Vendedor Values('Vendedor 3') Insert Into #Vendedor Values('Vendedor 4') Insert Into #Vendedor Values('Vendedor 5') Insert Into #Vendedor Values('Vendedor 6') Alter Table #Vendedor add primary key (iCodigoVendedor) Select * From #Vendedor Drop Table #Vendedor
Votar es agradecer.
Saludos.
Lima-Perú- Propuesto como respuesta Juan MondragónModerator miércoles, 8 de noviembre de 2017 17:22
- Marcado como respuesta Juan MondragónModerator martes, 14 de noviembre de 2017 17:04
Todas las respuestas
-
Lo de F o M es fácil: basta con añadir en la definición de la tabla detrás de la columna correspondiente una restricción de tipo CHECK:
... sexo char(1) not null check (sexo in ('F', 'M')), ...
Lo del idVendedor no se puede hacer directamente en la tabla salvo que uses un campo identity para que genere el id, y luego un campo calculado que concatene la V y formatee el id con ceros para sacar el idVendedor como lo quieres. Pero si no es aceptable esta solución del doble campo, entonces tienes que recurrir a generar el id que deseas desde el código que accede a la tabla. Hay varias formas de hacerlo: podría ser en el código cliente, que lo calcule antes de enviar el Insert a Sql server. Podría ser en un procedimiento almacenado, y forzar a todos los programas cliente a que graben siempre a través del procedimiento almacenado, sin tener permiso de escritura directa sobre la tabla. O podría ser con un trigger INSTEAD OF. El usar una u otra opción dependerá de tus circunstancias y cómo accedas a la tabla. En todos los casos, habrá que iniciar transacción, buscar el último valor, sumarle 1, rellenarlo con ceros y concatenarlo a la V, después salvar y hacer el commit de la transacción. Si no te sale, dinos cuál de las cuatro opciones has elegido y te ponemos un ejemplo de cómo implementar esa opción.
- Editado Alberto PoblacionMVP martes, 7 de noviembre de 2017 19:40
- Propuesto como respuesta Juan MondragónModerator martes, 7 de noviembre de 2017 20:10
-
Hola, para el código del vendedor podrías utilizar un campo calculado que te han sugerido el cual concatenarías con el campo identity
Create Table #Vendedor ( iCorrelativo Int Identity(1,1), iCodigoVendedor As 'V'+RIGHT('000'+RTRIM(iCorrelativo) ,3), vNombreVendedor Varchar(100) ) Insert Into #Vendedor Values('Vendedor 1') Insert Into #Vendedor Values('Vendedor 2') Insert Into #Vendedor Values('Vendedor 3') Insert Into #Vendedor Values('Vendedor 4') Insert Into #Vendedor Values('Vendedor 5') Insert Into #Vendedor Values('Vendedor 6') Select * From #Vendedor Drop Table #Vendedor
Votar es agradecer.
Saludos.
Lima-Perú- Editado Augusto1982 martes, 7 de noviembre de 2017 21:30
-
-
-
"grandioso, solo que al momento de poner llave primaria no puede quedar el codigodeVendedor o como podria hacer ???"
De poder se puede pero no sería lo mas recomendable , lo mas recomendable sería que utilizes números enteros como tu llave primaria , como es el caso de la columna identity
asi podrías crear la llave que deseas
Create Table #Vendedor ( iCorrelativo Int Identity(1,1), iCodigoVendedor As 'V'+RIGHT('000'+RTRIM(iCorrelativo) ,3)PERSISTED NOT NULL , vNombreVendedor Varchar(100) ) Insert Into #Vendedor Values('Vendedor 1') Insert Into #Vendedor Values('Vendedor 2') Insert Into #Vendedor Values('Vendedor 3') Insert Into #Vendedor Values('Vendedor 4') Insert Into #Vendedor Values('Vendedor 5') Insert Into #Vendedor Values('Vendedor 6') Alter Table #Vendedor add primary key (iCodigoVendedor) Select * From #Vendedor Drop Table #Vendedor
Votar es agradecer.
Saludos.
Lima-Perú- Propuesto como respuesta Juan MondragónModerator miércoles, 8 de noviembre de 2017 17:22
- Marcado como respuesta Juan MondragónModerator martes, 14 de noviembre de 2017 17:04