【发布时间】:2011-02-10 12:53:06
【问题描述】:
使用 SQL Server 2008
我有一张包含股票/股票/证券信息的表格。此表包含可以拥有的股票。
每只股票都有与之相关的货币。问题是货币也是一种股票,它也可以被拥有。即持有现金时
create table Stock
(
StockId int identity(1,1) not null CONSTRAINT StockPK PRIMARY KEY,
stockName varchar(100),
...
CurrencyId CONSTRAINT StockCurrencyIDFK FOREIGN KEY REFERENCES Stock(StockID),
)
对于现金行,CurrencyId 将等于 StockId
我的问题是将货币数据放入表中。在插入时,如何使用 stockID 的标识值填充 CurrencyID 列?
【问题讨论】:
-
是否通过存储的过程或触发器完成对该表的所有插入?如果我们摆脱 IDENTITY() 属性并自己实现 IDENTITY(),我们可以采取一些技巧,但您确实希望确保该代码只需要存在于一个地方。
-
有没有理由不能在单独的表中使用货币?
-
是的,所有插入都是通过存储过程完成的。
-
它们需要在同一个表中,因为您可以同时持有股票和货币的头寸。仓位表有一个股票的关键
标签: sql-server foreign-keys identity self-reference