在严格模式下,INSERT作为异常截断?

时间:2017-07-20 10:38:51

标签: mysql mariadb sql-mode

我正在使用MariaDB 10.2.4。默认情况下,sql_mode包含STRICT_TRANS_TABLES,这在很大程度上是好的。但在特定情况下,我希望数据被截断。有没有办法暂时覆盖sql_mode,或INSERT语句的选项明确允许截断?我在文档中或通过Google搜索找不到任何内容。

您可能会认为这是Should I disable MySQL strict mode?的副本,但问题是在2011年,所以从那时起可能会有新选项。另外,这个问题是关于模式的最佳实践,而不是关于在运行时覆盖的能力。

1 个答案:

答案 0 :(得分:1)

  

有没有办法暂时覆盖sql_mode

是的,你可以通过在INSERT之前触发SET sql_mode = 'mode';语句来改变这种情况。

https://mariadb.com/kb/en/mariadb/sql-mode/#setting-sql_mode

  

会话值仅影响当前客户端,并且可以在需要时由客户端更改。

因此,如果您在之后立即重新设置它,则可以确保它仅对此特定INSERT语句生效。