CREATE TRIGGER AAC ON [dbo].[DCSIBA]
FOR INSERT, UPDATE
AS
IF exists(SELECT * from inserted where IBA021='')
BEGIN
ROLLBACK
RAISERROR('客户单号不能为空',16,1)
END
以上触发器代码是用来录入订单时,客户单号这个字段不能为空的功能提醒
可实际应用中当客户单号字段为空时,系统提醒的是'此笔信息已被异动' 不是我想要提醒的内容'客户单号不能为空'2、在以上的触发器能不能实现当‘客户单号这个字段不能为空的功能提醒’后 不要把该已录好单据的信息清空,只要补录相应的数据就可以了谢谢!
FOR INSERT, UPDATE
AS
IF exists(SELECT * from inserted where IBA021='')
BEGIN
ROLLBACK
RAISERROR('客户单号不能为空',16,1)
END
以上触发器代码是用来录入订单时,客户单号这个字段不能为空的功能提醒
可实际应用中当客户单号字段为空时,系统提醒的是'此笔信息已被异动' 不是我想要提醒的内容'客户单号不能为空'2、在以上的触发器能不能实现当‘客户单号这个字段不能为空的功能提醒’后 不要把该已录好单据的信息清空,只要补录相应的数据就可以了谢谢!
http://blog.csdn.net/qianjin036a/archive/2011/01/13/6136588.aspx
CREATE TRIGGER AKEA ON [dbo].[DCSIBA]
INSTEAD OF INSERT,UPDATE
AS
BEGIN
IF exists(SELECT * from inserted where IBA021='')
SELECT '客户单号不能为空'
END还是老样子
Go
if object_id('DCSIBA') Is Not Null
Drop Table DCSIBA
Create Table DCSIBA
(
IBA021 nvarchar(50)
)GO
create trigger AKEA On DCSIBA for Insert,update
As
Begin IF exists(SELECT * from inserted where IBA021='')
Begin
Raiserror('客户单号不能为空',16,1)
End
End
Go
--test
Set implicit_transactions on
Declare @error nvarchar(50)
Insert Into DCSIBA(IBA021) values('')If @@ERROR >0
Rollback TranSet implicit_transactions offGo
/*
訊息 50000,層級 16,狀態 1,程序 AKEA,行 7
客户单号不能为空
*/
Go
if object_id('DCSIBA') Is Not Null
Drop Table DCSIBA
Create Table DCSIBA
(
IBA021 nvarchar(50)
)GO
create trigger AKEA On DCSIBA for Insert,update
As
Begin IF exists(SELECT * from inserted where IBA021='')
Begin
Raiserror('客户单号不能为空',16,1)
Rollback
Begin Tran
End
End
Go
--testInsert Into DCSIBA(IBA021) values('')
Go
/*
訊息 50000,層級 16,狀態 1,程序 AKEA,行 7
客户单号不能为空
*/上面腳本應用于Microsoft SQL Server 2005 - 9.00.4035.00
不同的SQL Server 版本,可能會有不同的應用。
rollback
raiserror 20009 '库存明细不允许批量插入!'
return
end
试试
可我是要针对软件ERP上的单据,所以还是要谢谢你
--下面的ROLLBACK去掉,就不会清空数据了,可在下面的代码中补录,也可以程序中执行补录CREATE TRIGGER AAC ON [dbo].[DCSIBA]
FOR INSERT, UPDATE
AS
IF exists(SELECT * from inserted where IBA021='')
BEGIN
ROLLBACK
RAISERROR('客户单号不能为空',16,1)
END