假设我的下表有值
StudentNumber StudentName Class
---------------------------------------------
0 'A' 100
1 'B' 100
0 'C' 200
1 'D' 200
2 'E' 200
我想声明StudentNumber
作为相对于班级编号的序列。
如果我将StudentName='F'
插入
如果无法使用索引。是否可以在insert命令中“按类选择最大值”。
(我更喜欢在单个命令中执行此操作以避免死锁等)
答案 0 :(得分:1)
这对我有用(SQL Server 2005)。如果这种首先设置变量的方法不能满足您的需求,那么您可能需要考虑将其作为插入触发器,并插入名称和类值。然后,DB可以提供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