如何使字符串自动增量

时间:2013-01-21 07:29:20

标签: sql sql-server

我有两张不同的桌子:

表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更新时,请给我相同的数字。请帮忙!

2 个答案:

答案 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的其他语法。

祝你好运。