MySQL - 插入时在另一个字段值中使用字段值

时间:2013-02-09 15:03:11

标签: mysql sql database insert

我想在插入新行时在另一个字段的值中使用一个字段的值(自动增量)。

插入新行时,会自动生成产品ID,但我想在另一个动态生成HTML链接的字段中使用该产品ID。

例如

ID | LINK

1 | products.php?ID = *

(products.php?id = *显然会包含在html'a'标签中)

我希望ID值在插入时显示*。

有没有办法这样做,所以这个过程不是手动的?

2 个答案:

答案 0 :(得分:0)

您可以使用Triggers

delimiter //

    CREATE TRIGGER trigger_name BEFORE INSERT ON products
    FOR EACH ROW 
    BEGIN
        SET NEW.link = CONCAT(NEW.link, NEW.id);
    END;//

delimiter ;

答案 1 :(得分:0)

拥有这个解决方案似乎不是最好的主意。您确定链接始终是这种格式吗?你确定他们永远不需要额外的参数(即组ID)吗? 您尝试做的是以两种不同的格式存储实际相同的数据(一种是id,另一种是唯一的href)。

这将导致其他问题,例如数据不一致(即,bugy软件可能会创建id = 123的行,链接为' products.php?id = 666' - 请参阅 - 数据库中没有任何内容保护的视角可以保护您不会在您的记录上调用可能会破坏数据一致性的更新语句。

现在一般来说:确保您的ID有一个true来源,并且您始终引用此true来源以动态生成在此ID中继的其他数据。 因此,在您的示例中,我建议使用一个函数,该函数将根据从数据库重试的ID动态生成链接。即不同的框架已经构建了为您做到这一点的方法(groovy,spring,我打赌也有PHP框架),您也可以编写自己的简单函数来生成链接(即像这样的伪代码:

getProductLink (int id) { printf ("product.php?id=%d",id) ;}

如果你决定改变你的url结构,那么你就不需要改变数据库中的任何数据了(你会这样做)。 PS:如果你真的想从数据库中获取列表,请编写一个mysql函数,它将根据提供的ID动态生成链接。

有善意将来给你带来很多痛苦