2013-09-22 2 views
2

У меня есть таблицы, называемые post и выглядеть, как показано ниже:Как установить значение по умолчанию SQL составляет первичный ключ

╔════════════════════════════════════╗ 
║  post_id origin_post_id rev ║ 
╠════════════════════════════════════╣ 
║  1   1    1 ║ 
║  2   1    2 ║ 
║  3   3    1 ║ 
║  4   3    2 ║ 
╚════════════════════════════════════╝ 

post_id является первичным ключом и использовать auto_increment.
Я использую origin_post_id для хранения идентификатора отправителя.

Я хочу установить origin_post_id как post_id, если это новое сообщение. Как позволить мне использовать

INSERT INTO POST 
      (POST_ID, 
      ORIGIN_POST_ID, 
      REV) 
VALUES  (NULL, 
      Default, 
      3) 

Что я должен делать, когда я создаю таблицу?
Есть ли способ получить ключ auto_increment?

ответ

3

Выполнить ваш запрос выше

INSERT INTO POST 
      (POST_ID, 
      ORIGIN_POST_ID, 
      REV) 
VALUES  (NULL, 
      Default, 
      3) 

затем Выполнить обновление запросов

UPDATE POST SET ORIGIN_POST_ID=POST_ID WHERE ORIGIN_POST_ID IS NULL 
+0

Это будет ходить по всей таблице. Он работает, если вы добавляете нулевую проверку, но чем больше таблица, тем медленнее она получается. – Sam

+0

'UPDATE POST SET ORIGIN_POST_ID = POST_ID WHERE ORIGIN_POST_ID NULL;' – Sam

+0

Я думаю, что это простой способ сделать это, спасибо. – FreedomKnight

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