http://topic.csdn.net/u/20111114/08/d3e0960c-aa48-4feb-af84-65d5d6082569.html?seed=1887072683&r=76480850#r_76480850
USE tempdb
go
CREATE TABLE PurchOutProduct(Qty int)
go
Create trigger tr_PurchOutProduct on PurchOutProduct
for insert
as
if exists(select 1 from inserted where Qty<=0)
rollback TRAN
GO
INSERT PurchOutProduct SELECT 10SELECT * FROM PurchOutProduct
/*
10
*/
INSERT PurchOutProduct SELECT -10/*
訊息 3609,層級 16,狀態 1,行 1
交易在觸發程序中結束。已中止批次。*/
我按上面的单独去建是个数据库来测试,没有问题, 但在ERP系统上的表就有问题了,就会提示 伺服器: 訊息 245,層級 16,狀態 1,行 1
將 varchar 數值 '40.00' 轉換成資料型別為 int 的資料行語法錯誤。的, 这是什么原因呢?难道ERP系统有限制!
USE tempdb
go
CREATE TABLE PurchOutProduct(Qty int)
go
Create trigger tr_PurchOutProduct on PurchOutProduct
for insert
as
if exists(select 1 from inserted where Qty<=0)
rollback TRAN
GO
INSERT PurchOutProduct SELECT 10SELECT * FROM PurchOutProduct
/*
10
*/
INSERT PurchOutProduct SELECT -10/*
訊息 3609,層級 16,狀態 1,行 1
交易在觸發程序中結束。已中止批次。*/
我按上面的单独去建是个数据库来测试,没有问题, 但在ERP系统上的表就有问题了,就会提示 伺服器: 訊息 245,層級 16,狀態 1,行 1
將 varchar 數值 '40.00' 轉換成資料型別為 int 的資料行語法錯誤。的, 这是什么原因呢?难道ERP系统有限制!
cast( Qty as int) 看看
for insert
as
if exists(select 1 from inserted where cast(Qty as decimal(18,2))<=0)
rollback TRAN最好改字段類型
ADD CONSTRAINT 約束名 CHECK (cast(Qty as decimal(18,2) >=0);
报如下错 伺服器: 訊息 2812,層級 16,狀態 62,行 1
找不到預存程序 't'。试了一下改字段类型不能保存,会提示报错 ERP系统资料表类型确定了应该不能随便改吧!
ADD CONSTRAINT 約束名 CHECK (cast(Qty as decimal(18,2) >=0);
报如下错 伺服器: 訊息 2812,層級 16,狀態 62,行 1
找不到預存程序 't'。试了一下改字段类型不能保存,会提示报错 ERP系统资料表类型确定了应该不能随便改吧!
ADD CONSTRAINT ck_purchoutproduct CHECK (cast(Qty as decimal(18,2) >=0);伺服器: 訊息 170,層級 15,狀態 1,行 2
行 2: '>' 附近的語法不正確。