2016-12-06 90 views
1

我有两列一个表的命令:如何更新非空列值以自动增加列值(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

一种选择是:

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)