2009-05-07 6 views
0

Y at-il quelqu'un là-bas qui peut m'aider à sélectionner plusieurs enregistrements qui ont été entrés/mis à jour sur des tables différentes en même temps dans la base de données SQL Server. Pensez-vous que c'est possible ou non?Comment puis-je sélectionner tous les enregistrements qui ont été entrés/mis à jour en même temps dans plusieurs tables dans SQL Server?

Votre aide est très appréciée, merci!

+0

Les données sont-elles déjà dans la base de données, ou écrivez-vous toujours l'application? –

+0

les données sont déjà dans la base de données. –

+0

Je ne pense pas qu'il existe une solution générale à votre problème. Les informations que vous recherchez ne sont pas enregistrées de manière centralisée et l'interrogation de chaque table qui vous intéresse est votre seule alternative (IMHO). Vous pouvez utiliser la génération de code pour créer le SQL nécessaire. Pouvez-vous ajouter plus de détails à votre question? – Tomalak

Répondre

1

Votre table comporte-t-elle une colonne date/heure de type DATETIME ??

Sinon, vous êtes probablement hors de la chance ....

Marc

+0

les tableaux ont horodatage, mais ce dont j'ai besoin est comment puis-je connaître tous les enregistrements qui ont été saisis? ou mis à jour? –

+0

Eh bien, vous ne pouvez vraiment pas faire grand-chose d'autre que de choisir parmi toutes les tables potentielles, avec un "WHERE CreatedDate = (date d'intérêt)" et ensuite voir où vous obtenez des résultats. Il n'y a pas de façon magique de choisir parmi toutes les tables pour une date particulière ... –

0

Hm ... pourrait-il être quelque chose d'aussi simple que

SELECT * 
FROM  MyTable 
WHERE CreatedDate = 'the date you are interested in' 

ou

SELECT * 
FROM  MyTable 
GROUP BY CreatedDate 
HAVING COUNT(*) > 1 

? Si vous êtes à l'intérieur du déclencheur d'insertion, vous pouvez interroger la pseudo-table inserted

+0

le cas est, il y a beaucoup de tables, comment saurais-je quelle table/tables sont mises à jour? –

0

0

Si les colonnes DATETIME sont tous le même nom, vous pouvez générer des requêtes telles que

select 
    'select * from ' 
     + t.name 
     + ' where UpdateDate = ''2009-05-01''' as SelectStatement 
from sys.tables as t 

Ou si le nom de la colonne datetime est pas statique, vous pouvez faire quelque chose le long de ces lignes:

select 
    'select * from ' + t.name 
     + ' where ' + c.name + ' = ''2009-05-01''' as SelectStatement 
from sys.tables as t join sys.columns as c on t.object_id=c.object_id 
where c.system_type_id = (select system_type_id from sys.types where name = 'datetime') 
Questions connexes