我有一個(對我來說)奇怪的問題。我嘗試爲我正在嘗試執行的事務鎖定一組表。但出於某種原因,至少我的一張桌子不會鎖定。我無法鎖定我的MySQL表
我的代碼看起來是這樣的,請remeber這只是我與當前問題的鎖,但所有評論都讚賞:)
出於某種原因ba_flight犯規被鎖定或那的問題,我最常用的有,但是,如果我只是打電話: 鎖定表ba_flight它完全沒問題。
-- SESSION A
-- Part 1 ba_flight
-- UNLOCK TABLES;
START TRANSACTION;
LOCK TABLES ba_booking WRITE,
ba_paid_booking WRITE,
ba_passenger WRITE,
ba_contact WRITE,
ba_weekday_factor READ,
ba_plane READ,
ba_flight READ,
ba_flight AS ba_f READ,
ba_weekly_schedule AS ba_ws READ,
ba_weekly_schedule READ;
-- ba_flight does not get locked
-- 1: Create the booking.
CALL new_booking(1, 6);
SHOW ERRORS;
COMMIT;
SET @bid = get_uncomplete_booking();
SELECT id
FROM ba_booking
WHERE contact_id IS NULL;
SELECT @bid AS "BID";
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12341234,
'Göran',
'Greenleaf');
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12351235,
'Adam',
'Jönsson');
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12361236,
'Niklas',
'of Gondor');
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12371237,
'Erik',
'Grey');
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12381238,
'Johan',
'Baggins');
INSERT INTO ba_passenger(booking_id,
ssn,
fname,
lname)
VALUES (@bid,
12381238,
'Elof',
'Baggins');
-- IF THIS IS FALSE THEN WE HAVE SOMETHING STRANGE GOING ON
-- WITH OUR BOOKING AND SHOULD ROLLBACK.
SELECT check_booked_passengers(@bid);
CALL new_contact(@bid,
'Göran',
'Greenleaf',
'[email protected]',
'+9973565677');
-- RETURNS TRUE IF BOOKING IS CORRECT
SELECT is_correct_booking(@bid);
COMMIT;
UNLOCK TABLES;
-- Part 3
-- START TRANSACTION;
LOCK TABLES ba_booking WRITE,
ba_paid_booking WRITE,
ba_passenger WRITE,
ba_flight WRITE,
ba_flight AS ba_f WRITE,
ba_contact WRITE,
ba_weekday_factor WRITE,
ba_weekly_schedule READ,
ba_weekly_schedule AS ba_ws READ,
ba_plane READ;
CALL pay_booking(@bid, 987654331);
COMMIT;
UNLOCK TABLES;
這是學校的分配只是爲了讓你知道我真的很想明白爲什麼我有這個問題。
請用「功課」 – Cez
將此代碼重新標記@ Marcus:謝謝..奇怪我已經出現了retag選項 – Cez
您是否收到關於ba_flight沒有被鎖定的錯誤?如果是這樣,請添加詳細信息。另外,請提供表格的引擎類型 – Cez