可以劫持server_default還設置ON UPDATE:
Column('datemodified', TIMESTAMP,
server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))
這將生成以下列項:
datemodified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
然而,MCHL的回答仍然適用:只能有表中有一個自動TIMESTAMP列(http://dev.mysql.com/doc/refman/5.5/en/timestamp.html)
另請注意,列的順序女人很重要!如果您有一個沒有DEFAULT和ON UPDATE修飾符的TIMESTAMP列,並且它是表中第一個TIMESTAMP列,它將自動設置爲DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。 (http://dev.mysql.com/doc/refman/5.5/en/timestamp.html)
所以這是好的:
Column('datemodified', TIMESTAMP,
server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))
Column('datecreated', TIMESTAMP)
雖然這不是:
Column('datecreated', TIMESTAMP)
Column('datemodified', TIMESTAMP,
server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))
爲了設置行的第一項中的'dateCreated會」爲當前時間,只需將其值顯式設置爲NULL即可。再次,從http://dev.mysql.com/doc/refman/5.5/en/timestamp.html:
默認情況下,時間戳列是NOT NULL,不能包含NULL值 ,並指派NULL分配當前時間戳。
如果我將寫 '用戶=表( '用戶',元數據, 柱( 'dateCreated會',日期時間), 柱( 'datemodified',時間戳, server_onupdate =文本( 'CURRENT_TIMESTAMP')), )' 然後它將工作在DEFAULT ON UPDATE CURRENT_TIMESTAMP? – Nilesh
我檢查了這個例子,但它沒有設置DEFAULT ON UPDATE CURRENT_TIMESTAMP。當我們用於單列。 :( – Nilesh
如果這是不可能的,那麼請讓我知道我怎麼能在sqlalchemy中設置onupdate觸發器? – Nilesh