如何从我的 SQL 中同一个表中的其他两个值创建一个值? [英] How can I create a value from two other values in the same table in my SQL?

查看:36
本文介绍了如何从我的 SQL 中同一个表中的其他两个值创建一个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 SQL 数据库中有一个名为orders"的表:

I have a table named "orders" in an SQL database:

id  date   name  orderID
========================
1   1502   John    ?
2   1502   Jane    ?

id"设置为 AUTO_INCREMENT,日期"在我通过 php 表单插入数据时创建:

The "id" is set to AUTO_INCREMENT and the "date" is created when I insert data via my php form:

if ( !empty($_POST)) {
        $name = $_POST['name'];
        $valid = true;


        if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO orders (name,date) values(?,CURDATE())";
            $q = $pdo->prepare($sql);
            $q->execute(array($name));
            Database::disconnect();
        }
}

我希望从值id"和date"自动创建orderID"的值:

I wish that the value for "orderID" is created automatically from the values "id" and "date":

id  date   name  orderID
========================
1   1502   John    15021
2   1502   Jane    15022

推荐答案

由于 id 是 AUTO_INCREMENT 这一事实,您无法处理此值.但这很简单.向表中添加一个 AFTER INSERT 触发器,然后让它更新 orderID 列.

Due to the fact, that the id is an AUTO_INCREMENT you have no hand on this value. But it's quite simple. Add a AFTER INSERT trigger to the table and let it update the orderID column afterwards.

这里是 AFTER UPDATE 触发器的快速示例.

Here a quick example of a AFTER UPDATE trigger.

CREATE TRIGGER yourTrigger
AFTER INSERT
   ON yourTable FOR EACH ROW

BEGIN
    UPDATE yourTable
    SET orderid = CAST(date as char(4)) + CAST(id as char(1))
    WHERE ID = NEW.id

END; 

这篇关于如何从我的 SQL 中同一个表中的其他两个值创建一个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆