数据库和程序设计用于预订系统

时间:2014-01-02 14:32:42

标签: database-design

我想写一个预订系统。 在样本中它有2个表:

_Classes: C_ID,C_title,C_quantity

_Persons: P_ID,P_Name,Class_ID

保留应该继续,直到一个类的_persons等于C_quantity。

我的问题是在将新人插入课程时检查容量可用性的最佳方法? 是否有可能在繁忙的系统中发生并行注册?

存储程序?触发?反式? 什么是最正确的想法?

(C#,SQL server)

1 个答案:

答案 0 :(得分:1)

我会说所有解决方案都有效。如果可以使用存储过程,那将是我认为最好的方法。它可以使用触发器,但是很难获得良好的错误处理。

不需要交易,因为您可以加入并获得一个查询。

有一个带有temptable的例子,你可以在最大值之前插入新行。如果你在proc或sql语句中这样做并不重要,但我认为使用trad EF会很难。


    create table #tmp
    (
        id int identity(1,1),
        data int
    )

-- call many times 
    declare @result table (id int )
    insert into #tmp 
    output Inserted.id into @result
    select a.* from 
    (select 1 data ) a
    inner join (select count(*) cnt from #tmp ) c on c.cnt < 5

    -- to get the new row id ( null/empty if full)
    select id from @result