我有两张不同的桌子:
表1
ID
AK001
AK001
AK001
(上面应该是AK001,AK002,AK003等......)
表2
LastNum
1
表1:更新表1设置ID = xx + RIGHT('....'+())依此类推
表2:UPDATE table2 SET LastNum = LastNum + 1(这有效,但是当我在创建新表单时输入错误的详细信息,尚未保存时,它也会给我+1)
我的问题是在表2更新后如何在表1中自动增加和更新?因为我面临的是table1,当table2更新时,请给我相同的数字。请帮忙!
答案 0 :(得分:3)
您应该考虑使用INT作为主键而不是varchar。然后使用该字段作为外键。
以下是detailed answer为什么不使用VARCHAR作为任何类型的密钥。
继续将你的商店ID存储为varchar,只需在两个表上添加新字段,在主表上确保为IDENTITY,它会自动递增。
关于using VARCHAR as primary key的主题有很多意见。您应该仔细分析您要解决的问题。当然,也许你只是无法改变任何东西并与已有的东西一起工作。在这种情况下,你需要使用一些解决方法作为@sgeddes建议的触发器。
答案 1 :(得分: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 Server:
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的其他语法。
祝你好运。