Das nennt man Verletzung der Normalform und ist nach Möglichkeit zu vermeiden.
Es sei denn, du brauchst die Domain als eigenes Feld, um damit spätere Abfragen effizienter ausführen zu können.
Trigger sind eine Möglichkeit. Sie wirken aber meines Wissens wie ein zweites SQL Statement, d.h. der Satz landet erstmal ohne Domain in der DB und DANN rennt der Trigger los und kann dran rumfingern. Müsste man genauer betrachten, kann auch davon abhängen ob Du Transaktionen verwendest.
Oder Du könntest Stored Procedures für INSERT und UPDATE verwenden und das Recht auf INSERT/UPDATE nur dieser Procedure granten. Die Procedure kümmert sich dann um die DOMAIN Spalte. Der Rest der Welt bekommt das EXECUTE-Recht für diese Procedure sowie SELECT und DELETE. Wobei - ich kenne die genauen Berechtigungsmöglichkeiten bei MySQL nicht, ich extrapoliere aus meinen Kenntnissen bei MS-SQL und IBM DB2.
Wenn Du genau eine Stelle in deinen Programmen hast, wo die Tabelle geschrieben wird, dann kannst du es aber auch ganz primitiv dort machen. Falls das an vielen Stellen passiert - hm, dann frag Dich, ob das sein muss ;-)
Rolf