2016-12-06 10 views
1

私は2つの列を持つ1つのテーブルの注文を持っている:NULLでない列の値を自動増分列の値(mysql)に更新するにはどうすればよいですか?

  1. ID(AUTO_INCREMENTキーフィールド)
  2. ORDER_ID(NOT NULLフィールド)。

私はidフィールドの値とORDER_ID更新するには、意味場合は、id = 1その後、ORDER_ID = 1、ID 2その後、ORDER_ID = 2ように.....

私はどのように行うことができます=場合それはMySQLのストアドプロシージャと?

ありがとうございました。

答えて

1

1つのオプションは次のとおりです。

mysql> DROP TABLE IF EXISTS `orders`; 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE TABLE IF NOT EXISTS `orders` (
    -> `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> `order_id` INT UNSIGNED NOT NULL 
    ->); 
Query OK, 0 rows affected (0.01 sec) 

mysql> DELIMITER // 

mysql> DROP PROCEDURE IF EXISTS `new_procedure`// 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE PROCEDURE `new_procedure`() 
    -> BEGIN 
    -> DECLARE `last_insert_id` INT UNSIGNED; 
    -> INSERT INTO `orders` (`id`, `order_id`) 
    -> VALUES (NULL, 0); 
    -> SET `last_insert_id` := LAST_INSERT_ID(); 
    -> UPDATE `orders` 
    -> SET `order_id` = `last_insert_id` 
    -> WHERE `id` = `last_insert_id`; 
    -> END// 
Query OK, 0 rows affected (0.00 sec) 

mysql> DELIMITER ; 

mysql> CALL `new_procedure`(); 
Query OK, 1 row affected (0.00 sec) 

mysql> CALL `new_procedure`(); 
Query OK, 1 row affected (0.00 sec) 

mysql> CALL `new_procedure`(); 
Query OK, 1 row affected (0.00 sec) 

mysql> SELECT 
    -> `id`, 
    -> `order_id` 
    -> FROM 
    -> `orders`; 
+----+----------+ 
| id | order_id | 
+----+----------+ 
| 1 |  1 | 
| 2 |  2 | 
| 3 |  3 | 
+----+----------+ 
3 rows in set (0.00 sec) 
関連する問題