2014-10-16 3 views
0

Я использую следующий запрос, чтобы вставить строку в таблицу, скопировав последнюю строку.почему этот запрос заблокирован

но заблокирован:

INSERT INTO tradeitem 
      (iteminfoid, 
      type, 
      userid, 
      cids) 
SELECT iteminfoid, 
     type, 
     userid, 
     cids 
FROM tradeitem 
ORDER BY tradeitemid DESC 
LIMIT 1; 

Я просто хочу, чтобы объяснить, почему это заблокировано, делают некоторые блокировки круга произошел в этом запросе?

спасибо за вашу мудрость :)

Первичный ключ tradeitemId

+0

Вы не можете использовать запросы внутри запроса, объявите его в переменную –

+0

, которая является вашим основным ключом? – Jobayer

+2

Кажется, работает для меня. Можете ли вы опубликовать свою схему? – NMK

ответ

0

Здесь вы идете со ссылкой SQL скрипку: http://sqlfiddle.com/#!2/48cb6/2

Ваш запрос работает отлично:

INSERT INTO TradeItem (
    itemInfoId 
    ,type 
    ,userId 
    ,cids 
    ) 
SELECT itemInfoId 
    ,type 
    ,userId 
    ,cids 
FROM TradeItem 
ORDER BY tradeItemId DESC limit 1; 

Обратите внимание, что tradeItemId будет иметь значение null после новой вставки (проверьте, объявлен ли tradeItemId как не пустое поле).

Возможно, вам также необходимо проверить первичный ключ & уникальных ограничений индекса.

+0

tradeItemId является первичным ключом, auto increment – Chinaxing

Смежные вопросы