SQL Server中的每个实体自动增量字段?

时间:2009-08-03 16:30:18

标签: sql-server

我的数据库中有一个表“foo”,主键为“fooID。”

我有第二个表“fooAttributes”,其中一个外键引用了foo.fooID。

我想在fooAttributes表(fooID,attributeNumber)上有一个复合键,当我插入一个新属性时,attributeNumber在per-foo的基础上自动递增。因此,foo 1将具有属性1,2,3 ...而foo number 2将具有属性1,2,3 ......等。

实现这一目标需要什么样的SQL-fu?这是实用的吗? (我确信,只要付出足够的努力,这是可能的。)

2 个答案:

答案 0 :(得分:2)

我认为在SQL中自动执行此操作并不像MS SQL Server中的标识列那样。我将构建一个存储过程来处理fooID中的传递。例如:

begin tran    
select @attributeNumber = isnull(max(attributeNumber),0)+1 
from fooAttributes where fooID = @fooID 

insert fooAttributes(fooID, attributeNumber)
values(@fooID, @attributeNumber)
commit

可能不是你想要的。如果可以采用自动方式,我也希望看到它。

答案 1 :(得分:1)

听起来你想要在Foo上使用触发器

插入Foo:

Insert fooAttributes
 select SCOPE_IDENTITY(), attributeId 
 from attributes

我假设您有一个名为“attributes”的表,其中包含所有属性。如果没有,你可以做自己的事情来获得属性ID(在subselect上的交叉连接将是我的第一个猜测)。