MySQL - UNLOCK TABLES 语句
MySQL UNLOCK TABLES 语句
会话会一次性释放所有表锁。您可以隐式释放表锁。如果与服务器的连接显式或隐式终止,所有锁都将被释放。
您可以使用 UNLOCK TABLES 语句显式释放表锁。
语法
以下是 MySQL UNLOCK TABLES 语句的语法 -
UNLOCK TABLES
示例
假设我们创建了一个包含销售详情以及客户联系方式的表,如下所示 -
CREATE TABLE SalesDetails ( ID INT, ProductName VARCHAR(255), CustomerName VARCHAR(255), DispatchDate date, DeliveryTime time, Price INT, Location VARCHAR(255), CustomerAge INT, CustomrtPhone BIGINT, DispatchAddress VARCHAR(255), Email VARCHAR(50) );
现在,让我们使用 INSERT 语句将 2 条记录插入到上面创建的表中 -
Insert into SalesDetails values (1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000, 'Hyderabad', 25, '9000012345', 'Hyderabad Madhapur', 'pujasharma@gmail.com'), (2, 'Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000, 'Chennai', 30, '9000012365', 'Chennai- TNagar', 'vanajarani@gmail.com');
如果我们想要另一个仅包含客户联系方式的表格,请创建一个表格 -
CREATE TABLE CustContactDetails ( ID INT, Name VARCHAR(255), Age INT, Phone BIGINT, Address VARCHAR(255), Email VARCHAR(50) );
以下查询使用 INSERT INTO SELECT 语句将记录插入 CustContactDetails 表。此处,我们尝试将 SALES_DETAILS 表中的记录插入到 CustContactDetails 表中。
在传输之前,我们获取了要插入记录的表的写锁,并获取了要插入记录的源表的读锁。最后,在传输完成后,我们释放记录。
LOCK TABLES SalesDetails READ, CustContactDetails WRITE; INSERT INTO CustContactDetails (ID, Name, Age, Phone, Address, Email) SELECT ID, CustomerName, CustomerAge, CustomrtPhone, DispatchAddress, Email FROM SalesDetails WHERE ID = 1 AND CustomerName = 'Raja';
让我们插入另一条记录 -
INSERT INTO CustContactDetails (ID, Name, Age, Phone, Address, Email) SELECT ID, CustomerName, CustomerAge, CustomrtPhone, DispatchAddress, Email FROM SalesDetails WHERE ID = 2 AND CustomerName = 'Vanaja'; UNLOCK TABLES;
验证
您可以验证 CustContactDetails 表的内容,如下所示 -
SELECT * FROM CustContactDetails;
输出
上述 mysql 查询将生成以下输出 -
ID | Name | Age | Phone | Address | |
---|---|---|---|---|---|
1 | Raja | 25 | 9000012345 | Hyderabad - Madhapur | pujasharma@gmail.com |
2 | Vanaja | 30 | 9000012365 | Chennai - TNagar | vanajarani@gmail.com |