{ *************************************************************************** } { } {! SKRIPTY BY MĚLY BÝT PSÁNY TAK, ABY BYLY SPUSTITELNÉ VÍCEKRÁT - TZN. MĚLY !} {! BY OBSAHOVAT RŮZNÉ TESTY EXISTENCE - NAPŘ.: !} { } { -existuje tabulka TabXXX ? } { IF OBJECT_ID('TabXXX','U')IS NOT NULL ... } { } { -existuje sloupec ABC v tabulce TabXXX ? } { IF COLUMNPROPERTY(OBJECT_ID('TabXXX','U'),'ABC','AllowsNull')IS NOT NULL ... } { } { -existuje default DF__TabXXX__ABC na sloupci ABC v tabulce TabXXX ? } { IF OBJECT_ID('DF__TabXXX__ABC','D')IS NOT NULL ... } { } { kde vezmu 2. parametr systémové funkce OBJECT_ID() - je to sysobjects.xtype } { - viz BOL } { } {!!! POZOR - POUŽITÍ RETURN VE ZMĚNOVÝCH SKRIPTECH V plgZmeny.pas NENÍ BEZTRESTNÉ !!!} { -protože změnové skripty jsou obaleny knihovanmi BEGIN TRAN..COMMIT, tak } { by případný RETURN ponechal transakci neuzavřenou ! Proto bych měl } { použít tuto konstrukci: } { IF @@TRANCOUNT>0 ROLLBACK /* nebo COMMIT dle situace */ } { RETURN } { -pokud je kód spouštěn přes EXEC() nebo sp_executesql, tak tam naopak } { ROLLBACK (COMMIT) být NESMÍ, protože RETURN ukončuje jen daný EXEC() } { -úplně nejlepší je se RETURNu ve změnových skriptech úplně vyhnout } { } { *************************************************************************** } unit plgZmeny; interface uses plgType; { =========================================================================== } const GZmenoveSkripty : array[0..0] of TplgZmenovySkript = ( // aby bylo mozno nemit zadny zmenovy skript, // musi zustat prvni skript nedefinovan !! (PlatiOd : $010020050210; Skript : ''; ) //last ); { =========================================================================== } implementation { ########################################################################### } { ########################################################################### } end.