4

我有 2 个不同的表:

表格1

ID
AK001 
AK001 
AK001 

(上面应该是AK001、AK002、AK003等....)

表2

LastNum
 1

表1:更新table1设置ID = xx + RIGHT('....'+()) 以此类推

表 2: UPDATE table2 SET LastNum = LastNum + 1 (这有效,但是当我在创建新表单时输入错误的详细信息时,尚未保存,它也给我 +1)

我的问题是如何在表 2 更新后自动增加和更新表 1?因为我面临的是 table1 在更新 table2 时给我相同的数字。请帮忙!

4

2 回答 2

3

您应该考虑使用 INT 作为主键而不是 varchar。然后将该字段用作外键。

这是有关为什么不将 VARCHAR 用作任何类型的键的详细答案。

继续将您的商店 ID 存储为 varchar,只需在两个表上添加新字段,在主表上确保为 IDENTITY,它会自动递增。

关于使用 VARCHAR 作为主键的主题有很多意见。你应该仔细分析你试图解决的问题。当然,也许你无法改变任何东西并使用你已经拥有的东西。在这种情况下,您需要按照@sgeddes 的建议使用一些解决方法作为触发器。

于 2013-01-21T07:48:44.687 回答
1

假设 Table1 应该始终以 XXX 结尾,它对应于 Table2 中的 LastNum 字段,听起来好像Trigger是最有效的。

您使用的是哪个 RDBMS?

如果是 MySQL:

CREATE TRIGGER myTrigger BEFORE INSERT ON Table2
  FOR EACH ROW BEGIN
    //Here you should use NEW.Lastnum to UPDATE your Table1
    // update table1 set ID = xx + RIGHT('....'+())
  END;

SQL 服务器:

CREATE TRIGGER myTrigger 
ON Table2
AFTER INSERT
AS
   //Here you should use INSERTED table (Lastnum column) to UPDATE your Table1
   // update table1 set ID = xx + RIGHT('....'+())
GO

您应该能够查找特定于 RDBMS 的其他语法。

祝你好运。

于 2013-01-21T07:45:23.457 回答