1

假设我有下表的值

StudentNumber      StudentName       Class
---------------------------------------------
      0              'A'              100              
      1              'B'              100              
      0              'C'              200              
      1              'D'              200              
      2              'E'              200                    

我想声明StudentNumber作为一个相对于类号的序列。

所以如果我StudentName='F'插入

  • 100 级,它会给它分配 2
  • 200 级,它会给它分配 3
  • 类 300 它将分配它一个 0

如果无法使用索引。是否可以在插入命令中“按类选择最大值”。

(我更喜欢在单个命令中执行此操作以避免死锁等)

4

1 回答 1

1

这对我有用(SQL Server 2005)。如果这种首先设置变量的方法不能满足您的需求,那么您可能需要考虑将其作为插入触发器并仅插入名称和类值。然后数据库可以提供 studentNumber 值。

CREATE TABLE t_sw (
studentNumber INT,
studentName VARCHAR(MAX),
class INT
)
GO


DECLARE @name VARCHAR(MAX)
DECLARE @class INT

SET @name = 'F'
SET @class = 300

INSERT INTO t_sw (studentNumber, studentName, class)
SELECT  COALESCE(MAX(studentNumber) + 1, 0), @name, @class
FROM    t_sw
WHERE   class = @class

SELECT * FROM t_sw
于 2013-07-01T08:15:09.613 回答