【发布时间】:2014-01-07 18:30:57
【问题描述】:
在这里您可以看到我的 SQL 表代码,存储过程正在运行,但行中没有填充信息。代码有什么问题?
CREATE TABLE Category_Master(
Category_ID INT IDENTITY(1,1) PRIMARY KEY,
Category_Name VARCHAR(50),
modification_Date DATETIME DEFAULT GETDATE()
)
Select * from Category_Master
Go
create trigger TRIGGER_MODIFDATE_Category_Master
on Category_Master
for insert, update
as begin
UPDATE Category_Master
SET modification_Date = GETDATE()
end
Go
CREATE PROCEDURE usp_InsertCategory_Master
@flag bit output,-- return 0 for fail,1 for success
@Category_ID int,
@Category_Name varchar(50)
AS
BEGIN
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO Category_Master(Category_ID, Category_Name)
VALUES (@Category_ID, @Category_Name)
SET @flag = 1;
IF @@TRANCOUNT > 0
BEGIN
COMMIT TRANSACTION;
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
SET @flag = 0;
END CATCH
END
Go
Declare @flag bit
EXEC usp_InsertCategory_Master @flag output, 1, 'Short LOAN'
EXEC usp_InsertCategory_Master @flag output, 2, 'Long LOAN'
if @flag=1
print 'Successfully inserted'
else
print 'There is some error'
【问题讨论】:
-
Y我们的触发器也很糟糕,它会更新所有记录,而不仅仅是您插入或更新的记录。您需要加入插入的表以仅获取受插入或更新影响的记录。
标签: sql sql-server sql-server-2008 stored-procedures sql-insert