SQL Server - SQL SERVER 2012 Agregar Constraint con Default y Case

   
Vista:

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Alfonso (3 intervenciones) el 13/04/2015 01:36:51
Estoy utilizando esto para crear un Constraint pero no me funciona

1
2
3
4
5
ALTER TABLE Suplidores
ADD CONSTRAINT DF_REGIS_CLASIF DEFAULT (CASE
									WHEN LEN(Registro_ID) = 9 THEN 'RNC'
									WHEN LEN(Registro_ID) = 11 THEN 'CED'
									ELSE 'GMR') FOR Clasificacion_ID

Yo deseo que cuando Registro_ID sea de 9 caracteres tome por default RNC, si es de 11 caracteres tome por default CED de lo contrario que tome GMR

Necesito Ayuda con esto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Isaias (3186 intervenciones) el 13/04/2015 17:34:51
No me queda claro, ¿a quien quieres aplicar ese DEFAULT?, digo, ¿A que columna?

Por otro lado, ¿no seria mas CONTROLABLE que lo hicieras mediante el procedimiento que inserta o actualiza el registro de la tabla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Alfonso (3 intervenciones) el 14/04/2015 01:37:57
Esta es la tabla creada y deseo agregarle el constraint que escribi en este tema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
CREATE TABLE Suplidores(
Suplidor_ID INT NOT NULL IDENTITY,
Registro_ID VARCHAR(13),
Clasificacion_ID VARCHAR(3),
Entidad_ID VARCHAR(3) CONSTRAINT DF_ENTIDAD_SUPLIDORES DEFAULT 'SUP',
Nombres_Suplidor VARCHAR(60),
Apellidos_Suplidor VARCHAR(60),
Telefono_Suplidor VARCHAR(12),
Celular_Suplidor VARCHAR(12),
Fax_Suplidor VARCHAR(12),
Email_Suplidor VARCHAR(30),
Direccion_Suplidor VARCHAR(100),
Sector_ID INT,
Provincia_ID INT,
Dias_Credito INT,
Excento_Impuesto CHAR(1) NOT NULL,
Excluir_Estado_Cuenta CHAR(1),
Cuenta_Contable VARCHAR(12),
Categoria_ID VARCHAR(3),
Estado_ID CHAR(1),
Notas NVARCHAR(MAX),
Cuenta_Pago VARCHAR(20),
Banco_Suplidor VARCHAR(60),
Codigo_Banco VARCHAR(20),
SwiftCod_Banco VARCHAR(20),
Cuenta_Pago_Inter VARCHAR(20),
Banco_Internacional VARCHAR(60),
SwiftCod_Internacional VARCHAR(20)
CONSTRAINT PK_SUPLIDOR PRIMARY KEY(Suplidor_ID),
CONSTRAINT FK_ENTIDAD_SUPLIDOR FOREIGN KEY (Entidad_ID) REFERENCES dbo.Entidades(Entidad_ID),
CONSTRAINT CHK_REGISTRO_SUPLIDOR CHECK((Clasificacion_ID='CED' AND Registro_ID LIKE '[0-9][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][-][0-9]') OR
(Clasificacion_ID='RNC' AND Registro_ID LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')),
CONSTRAINT FK_PROVINCIA_SUPLIDOR FOREIGN KEY(Provincia_ID) REFERENCES dbo.Provincias(Provincia_ID),
CONSTRAINT FK_SECTOR_SUPLIDOR FOREIGN KEY(Sector_ID) REFERENCES dbo.Sector(Sector_ID),
CONSTRAINT CHK_ESTADO_SUPLIDOR CHECK (Estado_ID IN('A','I')),
CONSTRAINT FK_ESTADO_SUPLIDOR FOREIGN KEY(Estado_ID) REFERENCES dbo.Estados(Estado_ID),
CONSTRAINT CHK_EXCLUIR_ESTCTASUP CHECK(Excluir_Estado_Cuenta IN('T','F')),
CONSTRAINT CHK_EXCIMP_SUPLIDOR CHECK(Excento_Impuesto IN('T','F')),
CONSTRAINT CHK_TELEFONO_SUPLIDOR CHECK(Telefono_Suplidor LIKE '[0-9][0-9][0-9][-][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9]'),
CONSTRAINT CHK_CELULAR_SUPLIDOR CHECK(Celular_Suplidor LIKE '[0-9][0-9][0-9][-][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9]'),
CONSTRAINT CHK_FAX_SUPLIDOR CHECK(Fax_Suplidor LIKE '[0-9][0-9][0-9][-][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9]'),
CONSTRAINT CHK_ENTIDAD_SUPLIDOR CHECK(Entidad_ID LIKE '[A-Z][A-Z][A-Z]'),
CONSTRAINT FK_CLASIF_SUPLIDOR FOREIGN KEY(Clasificacion_ID) REFERENCES dbo.Clasificacion(Clasificacion_ID),
CONSTRAINT FK_CATEG_SUPLIDOR FOREIGN KEY(Categoria_ID) REFERENCES dbo.Categoria_Entidades(Categoria_ID)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Isaias (3186 intervenciones) el 14/04/2015 18:12:11
Eso me queda claro, mi pregunta fue, ¿no seria mas CONTROLABLE que lo hicieras mediante el procedimiento que inserta o actualiza el registro de la tabla que ponerlo en un CONSTRAINT?

¿O quiero entender que no tienes control sobre el código que hace las actualizaciones?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Alfonso (3 intervenciones) el 14/04/2015 20:35:23
Por ahora, solo me gustaría saber como se realiza por constraint, es que estoy tomando clases de SQL SERVER 2012 y todavia no he llegado el modulo donde se aprende los procedimientos almacenados, funciones y disparadores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

SQL SERVER 2012 Agregar Constraint con Default y Case

Publicado por Isaias (3186 intervenciones) el 15/04/2015 00:19:23
No encontré una forma de como hacer un CONSTRAINT DEFAULT que dependiendo del valor de otro campo y la longitud de otro, coloque un valor default
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar