Ik ben bezig met een simpel programmatje waarmee ik de database die door ons project gebruikt wordt, kan laten genereren.
Dit programma doet eigenlijk niets anders dan de DDL bestanden die nodig zijn gaan uitvoeren dmv isql.
Nu heb ik ook -zoals in een ander topic reeds vermeld- nood aan history tables. Die history-tables komen in dezelfde databank maar op een andere filegroup.
Ik wil die history tables laten 'genereren'; dwz, voor iedere 'data-tabel' wil ik een history tabel laten genereren.
Nu moet die history tabel (vrijwel) identiek zijn aan de 'data-tabel'. Ik weet dat ik dmv de sp_columns stored procedure de column-informatie van een bepaalde tabel kan ophalen. Adhv die gegevens kan ik idd de 'CREATE TABLE' genereren, maar ik zit nog met een probleem:
Zoals je weet, moet je bij bepaalde columns een lengte aangeven (bij VARCHAR bv), en bij andere mag je dat dan weer niet doen (INT).
Een bijkomend probleem is ook de 'decimal' datat-types. Hier moet je niet alleen een lengte, maar ook een precisie aangeven.
Nu is mijn probleem: hoe kan ik te weten komen bij welke columns ik de lengte van het datatype moet specifieren, bij welke niet, en bij welke ik een scale / precision moet aangeven?
Ik heb ook al gezien dat er een makkelijkere manier bestaat om een tabel te maken met een identieke tabelstructuur; ik kan hetzelfde bekomen dmv een SELECT INTO .. FROM statement, maar daar heb ik geen controle over de FILEGROUP waar die tabel moet komen...
Dit programma doet eigenlijk niets anders dan de DDL bestanden die nodig zijn gaan uitvoeren dmv isql.
Nu heb ik ook -zoals in een ander topic reeds vermeld- nood aan history tables. Die history-tables komen in dezelfde databank maar op een andere filegroup.
Ik wil die history tables laten 'genereren'; dwz, voor iedere 'data-tabel' wil ik een history tabel laten genereren.
Nu moet die history tabel (vrijwel) identiek zijn aan de 'data-tabel'. Ik weet dat ik dmv de sp_columns stored procedure de column-informatie van een bepaalde tabel kan ophalen. Adhv die gegevens kan ik idd de 'CREATE TABLE' genereren, maar ik zit nog met een probleem:
Zoals je weet, moet je bij bepaalde columns een lengte aangeven (bij VARCHAR bv), en bij andere mag je dat dan weer niet doen (INT).
Een bijkomend probleem is ook de 'decimal' datat-types. Hier moet je niet alleen een lengte, maar ook een precisie aangeven.
Nu is mijn probleem: hoe kan ik te weten komen bij welke columns ik de lengte van het datatype moet specifieren, bij welke niet, en bij welke ik een scale / precision moet aangeven?
Ik heb ook al gezien dat er een makkelijkere manier bestaat om een tabel te maken met een identieke tabelstructuur; ik kan hetzelfde bekomen dmv een SELECT INTO .. FROM statement, maar daar heb ik geen controle over de FILEGROUP waar die tabel moet komen...
https://fgheysels.github.io/