diff --git a/sql-statements/sql-statement-commit.md b/sql-statements/sql-statement-commit.md index 6192c3862c6d..d3e9142a50e0 100644 --- a/sql-statements/sql-statement-commit.md +++ b/sql-statements/sql-statement-commit.md @@ -65,7 +65,9 @@ Query OK, 0 rows affected (0.01 sec) ## MySQL 兼容性 -* 对于 `COMMIT` 语句中的 `CompletionTypeWithinTransaction` 选项,目前只在语法上支持。 +* 在 MySQL 中,除了有多个 primary 的群组复制以外,`COMMIT` 语句通常不会导致错误。相比之下,TiDB 使用乐观并发控制,冲突可能导致 `COMMIT` 返回错误。 +* 默认情况下,`UNIQUE` 和 `PRIMARY KEY` 约束检查将延迟直至语句提交。可通过设置 `tidb_constraint_check_in_place=TRUE` 来改变该行为。 +* TiDB 对于 `CompletionTypeWithinTransaction` 仅有语法上的支持。即不支持事务提交后,关闭连接或继续开启一个新事务的提交选项。 ## 另请参阅 diff --git a/sql-statements/sql-statement-execute.md b/sql-statements/sql-statement-execute.md index f99ace24ca4f..dcf1926b466e 100644 --- a/sql-statements/sql-statement-execute.md +++ b/sql-statements/sql-statement-execute.md @@ -15,10 +15,6 @@ aliases: ['/docs-cn/dev/reference/sql/statements/execute/'] ![ExecuteStmt](/media/sqlgram/ExecuteStmt.png) -**Identifier:** - -![Identifier](/media/sqlgram/Identifier.png) - ## 示例 {{< copyable "sql" >}} diff --git a/sql-statements/sql-statement-insert.md b/sql-statements/sql-statement-insert.md index 76e54adcdf5e..d7c1305fc7dd 100644 --- a/sql-statements/sql-statement-insert.md +++ b/sql-statements/sql-statement-insert.md @@ -15,6 +15,10 @@ aliases: ['/docs-cn/dev/reference/sql/statements/insert/'] ![InsertIntoStmt](/media/sqlgram/InsertIntoStmt.png) +**TableOptimizerHints** + +![TableOptimizerHints](/media/sqlgram/TableOptimizerHints.png) + **PriorityOpt:** ![PriorityOpt](/media/sqlgram/PriorityOpt.png) @@ -31,16 +35,24 @@ aliases: ['/docs-cn/dev/reference/sql/statements/insert/'] ![TableName](/media/sqlgram/TableName.png) +**PartitionNameListOpt:** + +![PartitionNameListOpt](/media/sqlgram/PartitionNameListOpt.png) + **InsertValues:** ![InsertValues](/media/sqlgram/InsertValues.png) +**OnDuplicateKeyUpdate:** + +![OnDuplicateKeyUpdate](/media/sqlgram/OnDuplicateKeyUpdate.png) + ## 示例 {{< copyable "sql" >}} ```sql -CREATE TABLE t1 (a int); +CREATE TABLE t1 (a INT); ``` ``` diff --git a/sql-statements/sql-statement-replace.md b/sql-statements/sql-statement-replace.md index 5d7b01339d9a..9f80bf9a9fd7 100644 --- a/sql-statements/sql-statement-replace.md +++ b/sql-statements/sql-statement-replace.md @@ -27,6 +27,10 @@ aliases: ['/docs-cn/dev/reference/sql/statements/replace/'] ![TableName](/media/sqlgram/TableName.png) +**PartitionNameListOpt:** + +![PartitionNameListOpt](/media/sqlgram/PartitionNameListOpt.png) + **InsertValues:** ![InsertValues](/media/sqlgram/InsertValues.png) diff --git a/sql-statements/sql-statement-rollback.md b/sql-statements/sql-statement-rollback.md index e745f5c95429..f2c3b86d1cac 100644 --- a/sql-statements/sql-statement-rollback.md +++ b/sql-statements/sql-statement-rollback.md @@ -11,16 +11,16 @@ aliases: ['/docs-cn/dev/reference/sql/statements/rollback/'] ## 语法图 -**Statement:** +**RollbackStmt:** -![Statement](/media/sqlgram/Statement.png) +![RollbackStmt](/media/sqlgram/RollbackStmt.png) ## 示例 {{< copyable "sql" >}} ```sql -CREATE TABLE t1 (a int NOT NULL PRIMARY KEY); +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY); ``` ``` @@ -69,7 +69,7 @@ Empty set (0.01 sec) ## MySQL 兼容性 -`ROLLBACK` 语句与 MySQL 完全兼容。如有任何兼容性差异,请在 GitHub 上提交 [issue](/report-issue.md)。 +`ROLLBACK` 语句与 MySQL 不完全兼容,TiDB 对任何 `CompletionTypeWithinTransaction` 仅有语法上的支持,即不支持事务回滚后,关闭连接或继续开启一个新事务的回滚选项。如有其他兼容性差异,请在 GitHub 上提交 [issue](/report-issue.md)。 ## 另请参阅 diff --git a/sql-statements/sql-statement-set-transaction.md b/sql-statements/sql-statement-set-transaction.md index 9f6504e84e4c..826b705eb497 100644 --- a/sql-statements/sql-statement-set-transaction.md +++ b/sql-statements/sql-statement-set-transaction.md @@ -28,7 +28,7 @@ aliases: ['/docs-cn/dev/reference/sql/statements/set-transaction/'] {{< copyable "sql" >}} ```sql -SHOW SESSION VARIABLES like 'transaction_isolation'; +SHOW SESSION VARIABLES LIKE 'transaction_isolation'; ``` ``` @@ -53,7 +53,7 @@ Query OK, 0 rows affected (0.00 sec) {{< copyable "sql" >}} ```sql -SHOW SESSION VARIABLES like 'transaction_isolation'; +SHOW SESSION VARIABLES LIKE 'transaction_isolation'; ``` ``` @@ -78,7 +78,7 @@ Query OK, 0 rows affected (0.00 sec) {{< copyable "sql" >}} ```sql -SHOW SESSION VARIABLES like 'transaction_isolation'; +SHOW SESSION VARIABLES LIKE 'transaction_isolation'; ``` ``` @@ -94,7 +94,8 @@ SHOW SESSION VARIABLES like 'transaction_isolation'; * TiDB 支持仅在语法中将事务设置为只读的功能。 * 不支持隔离级别 `READ-UNCOMMITTED` 和 `SERIALIZABLE`。 -* 隔离级别 `REPEATABLE-READ` 在技术上属于快照隔离(Snapshot Isolation)。在 TiDB 中称为 `REPEATABLE-READ` 是为了和 MySQL 保持一致。 +* 通过快照隔离 (Snapshot Isolation) 技术,实现乐观事务的 `REPEATABLE-READ` 隔离级别,和 MySQL 兼容。 +* 在悲观事务中,TiDB 支持与 MySQL 兼容的 `REPEATABLE-READ` 和 `READ-COMMITTED` 两种隔离级别。具体描述详见 [Isolation Levels](/transaction-isolation-levels.md)。 ## 另请参阅 diff --git a/sql-statements/sql-statement-start-transaction.md b/sql-statements/sql-statement-start-transaction.md index 86888404d411..6fc8b08e18bb 100644 --- a/sql-statements/sql-statement-start-transaction.md +++ b/sql-statements/sql-statement-start-transaction.md @@ -7,7 +7,7 @@ aliases: ['/docs-cn/dev/reference/sql/statements/start-transaction/'] # START TRANSACTION -`START TRANSACTION` 语句用于在 TiDB 内部启动新事务。它类似于语句 `BEGIN` 和 `SET autocommit = 0`。 +`START TRANSACTION` 语句用于在 TiDB 内部启动新事务。它类似于语句 `BEGIN`。 在没有 `START TRANSACTION` 语句的情况下,每个语句都会在各自的事务中自动提交,这样可确保 MySQL 兼容性。 @@ -61,7 +61,12 @@ Query OK, 0 rows affected (0.01 sec) ## MySQL 兼容性 -`START TRANSACTION` 语句与 MySQL 完全兼容。如有任何兼容性差异,请在 GitHub 上提交 [issue](/report-issue.md)。 +`START TRANSACTION` 语句与 MySQL 不完全兼容。 + +* `START TRANSACTION` 相当于 MySQL 的 `START TRANSACTION WITH CONSISTENT SNAPSHOT`,即 `START TRANSACTION` 后执行了一个从 InnoDB 任意表读数据的 `SELECT` 语句(非 `SELECT FOR UPDATE`)。 +* `READ ONLY` 及其扩展选项都都只是语法兼容,其效果等同于 `START TRANSACTION`。 + +如有任何其他兼容性差异,请在 GitHub 上提交 [issue](/report-issue.md)。 ## 另请参阅