我正在尝试创建一个触发器,它将连续预订号码分配给会话预订。这些号码印在门票上,有点像电影票上的座位号。如何使用SQL Server触发器在字段中创建连续数字?
- 当SessionBooking记录被创建时,我希望触发器分配BookingNumber。
- 如果SessionBooking逻辑删除(IsDeleted = 1),则BookingNumber应设置为NULL
- 当SessionBooking被逻辑删除时,应在下次创建SessionBooking时重新分配BookingNumber。
- 会话还保持SessionBookings未逻辑删除
- 的BookingCount一旦BookingNumber已被分配,它不应该被改变(除非它被删除)
数据库的相关部分模式是:
----- -----------------
Table Session
----- -----------------
PK SessionID
int BookingCount (count of SessionBookings)
----- -----------------
Table SessionBooking
----- -----------------
PK SessionBookingID
FK SessionID
int BookingNumber (allows nulls)
bool IsDeleted (1 = deleted)
这是我到目前为止。对我来说这似乎太复杂了,出于某种原因,有时候我创建SessionBooking时,BookingNumber仍然为NULL。
对于一些疯狂的原因,我不能发表这个文本,我不得不使用屏幕捕获...
由于某种原因,我不能在问题中发布触发器的SQL - 我只是得到错误。 –
你真的必须为'DELETE'开火吗?设置一个表经历逻辑删除('IsDeleted =')和物理删除是很奇怪的。 –
你说得对,物理删除不会真的发生,除非你修改一条记录,并且它出现在INSERTED和DELETED表中 –