none
Porque default no funciona RRS feed

  • Pregunta

  • Hola a todos... queria hacer una consulta... tengo una tabla que es creada para insertar valores por defecto si es que no se ingresa nada... el problema radica en que cuando hago un insert... select no funcionan los valores por defecto y me da un error diciendo que en la tabla no se puede insertar un valor nulo (esto debido a la restricción de la columna como not null), en otras palabras no genera el dato por defecto que se le ha indicado... que podria estar sucediendo o no teno en cuenta???.. Desde ya muchas gracias

    Just me

    • Tipo cambiado CarlosPositivo miércoles, 26 de diciembre de 2012 16:51
    miércoles, 26 de diciembre de 2012 16:39

Respuestas

  • En efecto... le di una revizada a la tabla con select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME like 'tabla' y en la columna COLUMN_DEFAULT los valores aparecen como null, al parecer hay un problema en la creación de la tabla... muchas gracias por su tiempo.

    Just me

    • Marcado como respuesta CarlosPositivo miércoles, 26 de diciembre de 2012 17:56
    miércoles, 26 de diciembre de 2012 17:56

Todas las respuestas

  • Hola.

    Simplemente no le pases ese campo, omítelos en el conjunto de campos que vayas a suministrar. Si nos pasas tu sentencia y el campo que quieres que vaya como default te podemos devolver lo que habría que enviar.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 26 de diciembre de 2012 17:10
    Moderador
  • Hola qwalgrande... en efecto hago lo que mencionas, mi código de inserción es este:

    	INSERT INTO caja.RegObligacion(biIdRegObligacion,biIdRegDetaFraccionamiento
    		,iIdEjercicio,cCodMaeClasTributo,cCodMaeClasConcepto,cCodMaeEstaObligacion,cCodMaeFase
    		,cCodHojaResumen,cCodRegContribuyente,cCodRegPropietario,cCodMaeTipoBienPropiedad,nvRegUnidad,cCodMaeUso
    ,cCodMaeAcreedor,iNumCuota,deTotaInsoluto,deTotaReajuste,deTotaInteres,deTotaGasto,dtFechEmision,dtFechVencimiento
    		,dtFechPago,nvObservacion,iIdRegUsuaRegistra,bEstado)
    	SELECT ROW_NUMBER() OVER (ORDER BY iRowTmmObliFinal)+@biIdRegObligacion,NULL
    		,iIdEjercicio,cCodMaeClasTributo,cCodMaeClasConcepto,cCodMaeEstaObligacion,cCodMaeFase
    		,cCodHojaResumen,cCodRegContribuyente,cCodRegPropietario,cCodMaeTipoBienPropiedad,nvRegUnidad,cCodMaeUso
    		,cCodMaeAcreedor,iNumCuota,deTotaInsoluto,0,0,deTotaGasto,dtFechEmision,dtFechVencimiento
    		,dtFechPago,nvObservacion,iIdRegUsuaRegistra,1
    	FROM #TmmObliFinal
    	WHERE iIdOperacion IN (0,1,3)
    	AND (deTotaInsoluto>0 OR deTotaGasto>0)

    Pero la tabla tiene mas columnas que son obligatorias, pero para las cuales se suministra datos en default (al momento de crear la tabla) y aun eso me echa error, referenciandome a columnas que no estan en el insert.

    Just me

    miércoles, 26 de diciembre de 2012 17:25
  • Debería de funcionar, como se puede comprobar fácilmente haciendo una prueba como esta:

    use tempdb
    go
    
    create table prueba (
     campo1 int not null,
     campo2 int not null constraint dfPrueba default 777
    )
    go
    
    insert into prueba(campo1)
    select 123 from AdventureWorks2008.Person.Person
    go
    
    select * from prueba
    

    Si no te funciona, es cuestión de revisarlo con cuidado. Debes estar omitiendo algún campo que crees que tiene un default pero en realidad no lo tiene.

    Por cierto, ¿no será que la tabla tiene un trigger, y es en el trigger donde se produce el error (al insertar algo en otra tabla distinta)?

     

    • Marcado como respuesta CarlosPositivo miércoles, 26 de diciembre de 2012 17:54
    • Desmarcado como respuesta CarlosPositivo miércoles, 26 de diciembre de 2012 17:54
    miércoles, 26 de diciembre de 2012 17:39
  • En efecto... le di una revizada a la tabla con select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME like 'tabla' y en la columna COLUMN_DEFAULT los valores aparecen como null, al parecer hay un problema en la creación de la tabla... muchas gracias por su tiempo.

    Just me

    • Marcado como respuesta CarlosPositivo miércoles, 26 de diciembre de 2012 17:56
    miércoles, 26 de diciembre de 2012 17:56