我正在阅读sql.txt
文件,这是一个部分。它的作用是创建一个表“Page”:
DROP TABLE IF EXISTS `Page`;
CREATE TABLE `Page` (
`id` bigint(20) NOT NULL auto_increment,
`pageId` int(11) default NULL,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `pageId` (`pageId`)
)
--
-- Dumping data for table `Page`
--
LOCK TABLES `Page` WRITE;
/*!40000 ALTER TABLE `Page` DISABLE KEYS */;
/*!40000 ALTER TABLE `Page` ENABLE KEYS */;
UNLOCK TABLES;
我有几个问题:
TABLES
是数据库名称吗?WRITE
是否将数据加载到表'页'?如果是,数据来源在哪里?答案 0 :(得分:0)
TABLES不是数据库名称。这意味着要锁定哪个表(在本例中为表' Page')。
WRITE表示,表格被锁定以便写入。
这意味着锁定表,而不是数据库。
答案 1 :(得分:0)
LOCK TABLES
是一个SQL命令(请参阅文档链接),它将锁定应用于指定的表集。在这种情况下,它只有一个表Page
:
LOCK TABLES `Page` WRITE;
在这种情况下,它将是两个表:
LOCK TABLES `Page`, `Book` WRITE;
锁可以有一个'type',在这种情况下是WRITE
。这意味着当此锁定到位时,无法将数据写入表中。这可确保在完成所有操作之前,不会更新任何更新。这使数据库表保持已知状态。
请注意,您仍然可以从写锁定下的表中读取。这意味着在写入数据时读取将是不确定的。
SQL不支持锁定整个数据库(据我所知)。上面的命令只会锁定指定的表。