MySQL-使用前缀作为插入时的主键的自动增量

时间:2018-08-18 12:41:06

标签: mysql

MI_TEST_ID | MI_TESTNAME | MI_DATE_CREATED | MI_FLAG |

我尝试在插入之前创建触发器,但是它不起作用。可以在插入之前使用触发器进行自动递增吗?

MySQL中有一个内置的自动增量功能,但是我希望我的测试ID具有MI001之类的前缀。

  BEGIN 
INSERT INTO `mi_test` VALUES (NULL);
SET NEW.mi_test_id = CONCAT('MI', LPAD(LAST_INSERT_ID(), 3, '0'))

END

这是我直接在phpmyadmin触发器函数中使用的触发器。每当我尝试插入时。总是说列数与第1行的值数不匹配

我在其他线程中找到了解决方案,发现其中一个需要另一个表进行排序,但是我需要在一个查询中使用它。

1 个答案:

答案 0 :(得分:0)

您可以找到要分配给新记录的当前auto_increment值。 并在before触发器中将其用作user_records表的父用户ID。 您必须查询information_schema.tables表以找到该值。

示例:

    let selectedImage: UIImage?

    let parameters: Parameters = ["user_id":  "1","description": "test"];

    Alamofire.upload(multipartFormData: { MultipartFormData in

        for (key, value) in parameters {
            MultipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }

        let imgData = UIImageJPEGRepresentation(selectedImage!,1)
        MultipartFormData.append(imgData!, withName: "fileset", fileName: "file.jpeg", mimeType: "image/jpeg")

    }, to: "mysite/upload.php") { (result) in
        switch result {
        case .success(let upload, _, _):

        upload.uploadProgress(closure: { (Progress) in
              print("Upload Progress: \(Progress.fractionCompleted)")
           })

            upload.responseJSON { response in
                print(response.result.value!)
            }

        case .failure(let encodingError):
            print(encodingError.localizedDescription)
            break
        }

    }