Wenn im generierten "INSERT"-Statement explizit einem Feld NULL übergeben wird, dann wird bei den meisten
DBMS auch NULL in die Tabelle geschrieben.
Der "DEFAULT"-Wert wird vom
DBMS nur verwendet, wenn das Feld
nicht im Statement vorkommt, oder dort explizit DEFAULT übergeben wird.
Ich weiß nicht, ob FieDAC, bzw. der TFDBatchMoveDataSetWriter Letzteres kann.
https://stackoverflow.com/questions/...default-values
Hier werden ja mit einem Statement mehrere Records übergeben und somit stünde ein Feld immer im Statement, sobald es mindestens einmal einen Wert enthält.
(also falls/da nicht jeder Datensatz einzeln übergeben würde)
Beim normalen
Query.Post, lassen viele
DB-Komponenten die Felder mit NULL weg, wenn sie das INSERT-Statement generieren.
PS: Bei uns werden im AfterInsert meistens die Default-Werte von der DB abgerufen und in die DataSet.Fields eingetragen, damit die Nutzer Default-Werte bereits im Programm sehen, während des Ausfüllens der restlichen Edits. (dort greift dann auch beim Insert nicht mehr das DEFAULT der Datenbank, da bereits Daten in den Feldern drin stehen)