@@ -143,6 +143,68 @@ extension Table {
143143 column: column
144144 )
145145 }
146+
147+ public static func createTemporaryTrigger(
148+ _ name: String ? = nil ,
149+ ifNotExists: Bool = false ,
150+ afterUpdateTouch date: KeyPath < TableColumns , TableColumn < Self , Date ? > > ,
151+ fileID: StaticString = #fileID,
152+ line: UInt = #line,
153+ column: UInt = #column
154+ ) -> TemporaryTrigger < Self > {
155+ Self . createTemporaryTrigger (
156+ name,
157+ ifNotExists: ifNotExists,
158+ afterUpdateTouch: {
159+ $0 [ dynamicMember: date] = SQLQueryExpression ( " datetime('subsec') " )
160+ } ,
161+ fileID: fileID,
162+ line: line,
163+ column: column
164+ )
165+ }
166+
167+ public static func createTemporaryTrigger(
168+ _ name: String ? = nil ,
169+ ifNotExists: Bool = false ,
170+ afterInsertTouch updates: ( inout Updates < Self > ) -> Void ,
171+ fileID: StaticString = #fileID,
172+ line: UInt = #line,
173+ column: UInt = #column
174+ ) -> TemporaryTrigger < Self > {
175+ Self . createTemporaryTrigger (
176+ name,
177+ ifNotExists: ifNotExists,
178+ after: . insert { new in
179+ Self
180+ . where { $0. rowid. eq ( new. rowid) }
181+ . update { updates ( & $0) }
182+ } ,
183+ fileID: fileID,
184+ line: line,
185+ column: column
186+ )
187+ }
188+
189+ public static func createTemporaryTrigger(
190+ _ name: String ? = nil ,
191+ ifNotExists: Bool = false ,
192+ afterInsertTouch date: KeyPath < TableColumns , TableColumn < Self , Date ? > > ,
193+ fileID: StaticString = #fileID,
194+ line: UInt = #line,
195+ column: UInt = #column
196+ ) -> TemporaryTrigger < Self > {
197+ Self . createTemporaryTrigger (
198+ name,
199+ ifNotExists: ifNotExists,
200+ afterUpdateTouch: {
201+ $0 [ dynamicMember: date] = SQLQueryExpression ( " datetime('subsec') " )
202+ } ,
203+ fileID: fileID,
204+ line: line,
205+ column: column
206+ )
207+ }
146208}
147209
148210public struct TemporaryTrigger < On: Table > : Statement {
0 commit comments