我是一名在SQL Server 2005中执行项目的学生。我正在尝试编写一个过程来为ID生成并插入主键。我想过一个插入触发器之前,但我得到错误。有人可以帮助我..这是我到目前为止:触发SQL Server 2005之前
CREATE TRIGGER Create_ResourceID
ON Resource
before INSERT
AS
DECLARE @resourceid INT
SELECT @resourceid = (max(ResourceID) + 1) FROM Resource
GO
INSERT INTO Resource(ResourceID) VALUES (@resourceid);
你得到什么错误?顺便说一句,我认为你需要缩进你的代码的第一行(开始'CREATE TRIGGER',但我不能在缩进中编辑,因为StackOverflow告诉我需要改变至少6个字符,而缩进只有4个! – nurdglaw
SQL Server没有任何'BEFORE'触发器,只是不存在,您需要使用'INSTEAD OF INSERT'触发器。 –
为什么不使用['IDENTITY'](http:/ /msdn.microsoft.com/en-us/library/ms186775(v=sql.90).aspx)列?它避免了您似乎注定要体验的竞争条件的所有变化,不需要触发器,并使用['SCOPE_IDENTITY()'](http://msdn.microsoft.com/en-us/library/ms190315(v = sql.90).aspx)或['OUTPUT']( http://msdn.microsoft.com/en-us/library/ms177564(v=sql.90).aspx)子句。(_Do_花时间了解OUTPUT。) – HABO