j'ai pris quelques SQL similaire à ce qui suit:Comment insérer dans tempoary table deux fois
IF EXISTS(SELECT name FROM tempdb..sysobjects WHERE name Like N'#tmp%'
and id=object_id('tempdb..#tmp'))
DROP TABLE #tmp
into #tmp
select * from permTable
Je dois ajouter des données à #tmp avant poursuite du traitement:
insert into #tmp
select * from permTable2
Mais cela donne des erreurs car SQL a pris des tailles et des types pour les colonnes #tmp (par exemple si permTable a une colonne pleine de ints mais permTable2 a une colonne avec le même nom mais avec une valeur NULL dans un enregistrement "Impossible d'insérer la valeur NULL dans la colonne 'IsPremium ', table' tempdb.dbo. # tmp ").
Comment obtenir #tmp pour avoir les types que je veux? Est-ce vraiment une mauvaise pratique?
dites-vous que permTable et permTable2 ont des schémas différents? –
Ils n'existent pas car il s'agit d'un exemple simplifié mais pour les besoins de cet exemple, les tables auront les mêmes schémas – Patrick
BTW - J'éviterais select * dans - cela rendra toute modification apportée à la table source un changement de rupture. –