Abbiamo DEFAULT CreatedDate e non applicano con trigger
Ci sono momenti in cui si vuole impostare la data in modo esplicito - per esempio se importiamo dati da un'altra fonte.
V'è il rischio che Bug applicazione potrebbe pasticciare con la CreateDate, o di un DBA scontento per quella materia (non abbiamo non-DBA collegamento diretto al nostro DB)
Suppongo che si potrebbe impostare colonna- autorizzazioni di livello su CreateDate.
Una via di mezzo potrebbe essere quella di avere un TRIGGER INSERISCI creare una riga in una tabella 1: 1, in modo che la colonna fosse fuori dalla tabella principale. La seconda tabella potrebbe avere autorizzazioni SELECT, in cui la tabella principale dispone delle autorizzazioni UPDATE e quindi non è necessario un trigger UPDATE per impedire modifiche a CreateDate, che rimuoverà un po 'di "peso" durante l'aggiornamento delle righe normalmente.
suppongo che COUL avere un UPDATE/DELETE trigger sul secondo tavolo per prevenire il cambiamento (che non sarebbe mai stato eseguito in circostanze normali, in modo "leggero")
po 'di dolore per avere la tabella in più però ... potrebbe avere una tabella per tutti i CreateDates - TableName, PK, CreateDate.La maggior parte degli architetti di database lo odierà però ...
Si noti che questo può essere aggirato dagli utenti poiché il valore predefinito non viene preso in considerazione quando si inserisce un valore effettivo. E può anche essere aggiornato dagli utenti. Probabilmente è abbastanza buono se puoi controllare quale SQL viene eseguito (e non puoi :-) ma non è sicuro. – paxdiablo
Questo è in realtà una buona cosa, perché se un utente ha una data specifica che deve mettere lì probabilmente dovrebbe essere permesso a meno che tu non abbia regole che governano diversamente. – James
Rispettosamente in disaccordo, @James. Non hai mai sentito parlare di Sarbanes-Oxley? :-) Se hai una colonna DateCreated, dovrebbe essere impostata alla data di creazione della riga. Se si desidera una colonna modificabile dall'utente, dovrebbe essere denominata DateCreatedForPurposesOfFraud o qualcosa di simile. – paxdiablo