各位大侠们!您好! 最近碰到一个问题!网上屡找答案不得!所以麻烦帮忙解答一下
我写一个发邮件的小程序
建了一个邮件表 邮件信息表 当向邮件信息表添加数据时进行触发器把其中的发件箱,收件箱,未读邮件数目增加
邮件表如下所示
/*==============================================================*/
/* TABLE: Email */
/*==============================================================*/
CREATE TABLE Email (
Email_ID INT IDENTITY(1,1),
Email_Name VARCHAR(200) null DEFAULT '匿名',
Email_UseState INT not null DEFAULT 0,/**邮件使用状态***/
Email_Address VARCHAR(500) unique not null, /****应当符合邮箱的规则***/
Email_Pwd VARCHAR(500) not null DEFAULT '123456', /***为人员独立登录的时候使用***/
Email_Sented INT not null DEFAULT 0,/**已发送邮件默认为0***/
Email_Draft INT not null DEFAULT 0,/**草稿箱默认为0**/
Email_Receive INT not null DEFAULT 0,/***收件箱默认为0**/
Email_Waste INT not null DEFAULT 0,/***垃圾箱默认为0**/
Email_UnRead INT not null DEFAULT 0,/***未读邮件默认为0**/
CONSTRAINT PK_Email PRIMARY KEY (Email_ID)
)
GO 邮件信息表为下图所示/*==============================================================*/
/* TABLE: Email_Message */
/*==============================================================*/
CREATE TABLE Email_Message (
Email_Message_ID INT IDENTITY(1,1),
Send_EmailID INT not null,/**发件人的邮件ID***/
Receive_EmailID INT not null,/**收件人的ID***/
Email_Title VARCHAR(500) not null,/**邮件的主题**/
Email_Messages TEXT not null, /***邮件的内容**/
Email_SendTime Datetime DEFAULT GETDATE() not null,/***邮件发送时间默认获取***/
Email_State INT DEFAULT 1 not null,/***邮件的状态!默认为1!1为正常显示!0为已删**/
Email_ReadState INT DEFAULT 1 not null,/***邮件的阅读状态!默认为1!1为未读!0为已读**/
Email_FileName VARCHAR(200) null,/***附件名字***/
Email_FileURL VARCHAR(500) null, /***附件的地址**/
IS_Draft INT Default 0 NOT NULL,/****是否是草稿 1为草稿 0 为正常发送***/
CONSTRAINT PK_Email_Message PRIMARY KEY (Email_Message_ID)
)
GO
/*****************************************************************************/
/*****Foreign Key 外键******************************************************/
ALTER TABLE Email_Message
ADD CONSTRAINT FK_Email_Message_Send_EmailID FOREIGN KEY (Send_EmailID)
REFERENCES Email (Email_ID)
GO
ALTER TABLE Email_Message
ADD CONSTRAINT FK_Email_Message_Receive_EmailID FOREIGN KEY (Receive_EmailID)
REFERENCES Email (Email_ID)
GO
/********************************************************************************/
再下面是触发器的代码IF EXISTS (SELECT * FROM SYSOBJECTS WHERE xtype='TR' AND NAME = 'T_INSERT_Email_Message')
DROP TRIGGER T_INSERT_Email_Message
GO
/****触发器 发送邮件***/
CREATE TRIGGER T_INSERT_Email_Message
ON Email_Message
FOR INSERT
AS
BEGIN
DECLARE @Send_EmailID int,@Receive_EmailID int,@Save_State int
SELECT @Save_State = IS_Draft,@Send_EmailID=Send_EmailID,@Receive_EmailID=Receive_EmailID FROM INSERTED
IF(@Save_State=1)
BEGIN
UPDATE Email SET Email_Draft = Email_Draft + 1 WHERE Email_ID = @Send_EmailID
END
ELSE
BEGIN
UPDATE Email SET Email_Sented = Email_Sented + 1 WHERE Email_ID = @Send_EmailID
UPDATE Email SET Email_Receive = Email_Receive + 1 WHERE Email_ID = @Receive_EmailID
UPDATE Email SET Email_UnRead = Email_UnRead + 1 WHERE Email_ID = @Receive_EmailID
END
END现在的问题是当我在 Management Studio 进行INSERT时 Email的发件箱,收件箱,未读邮件数目会自动更改
但是当我用hibernate在Web页面进行数据添加的时候Email的列没有任何的改变
请问 是我哪里出错了?
我写一个发邮件的小程序
建了一个邮件表 邮件信息表 当向邮件信息表添加数据时进行触发器把其中的发件箱,收件箱,未读邮件数目增加
邮件表如下所示
/*==============================================================*/
/* TABLE: Email */
/*==============================================================*/
CREATE TABLE Email (
Email_ID INT IDENTITY(1,1),
Email_Name VARCHAR(200) null DEFAULT '匿名',
Email_UseState INT not null DEFAULT 0,/**邮件使用状态***/
Email_Address VARCHAR(500) unique not null, /****应当符合邮箱的规则***/
Email_Pwd VARCHAR(500) not null DEFAULT '123456', /***为人员独立登录的时候使用***/
Email_Sented INT not null DEFAULT 0,/**已发送邮件默认为0***/
Email_Draft INT not null DEFAULT 0,/**草稿箱默认为0**/
Email_Receive INT not null DEFAULT 0,/***收件箱默认为0**/
Email_Waste INT not null DEFAULT 0,/***垃圾箱默认为0**/
Email_UnRead INT not null DEFAULT 0,/***未读邮件默认为0**/
CONSTRAINT PK_Email PRIMARY KEY (Email_ID)
)
GO 邮件信息表为下图所示/*==============================================================*/
/* TABLE: Email_Message */
/*==============================================================*/
CREATE TABLE Email_Message (
Email_Message_ID INT IDENTITY(1,1),
Send_EmailID INT not null,/**发件人的邮件ID***/
Receive_EmailID INT not null,/**收件人的ID***/
Email_Title VARCHAR(500) not null,/**邮件的主题**/
Email_Messages TEXT not null, /***邮件的内容**/
Email_SendTime Datetime DEFAULT GETDATE() not null,/***邮件发送时间默认获取***/
Email_State INT DEFAULT 1 not null,/***邮件的状态!默认为1!1为正常显示!0为已删**/
Email_ReadState INT DEFAULT 1 not null,/***邮件的阅读状态!默认为1!1为未读!0为已读**/
Email_FileName VARCHAR(200) null,/***附件名字***/
Email_FileURL VARCHAR(500) null, /***附件的地址**/
IS_Draft INT Default 0 NOT NULL,/****是否是草稿 1为草稿 0 为正常发送***/
CONSTRAINT PK_Email_Message PRIMARY KEY (Email_Message_ID)
)
GO
/*****************************************************************************/
/*****Foreign Key 外键******************************************************/
ALTER TABLE Email_Message
ADD CONSTRAINT FK_Email_Message_Send_EmailID FOREIGN KEY (Send_EmailID)
REFERENCES Email (Email_ID)
GO
ALTER TABLE Email_Message
ADD CONSTRAINT FK_Email_Message_Receive_EmailID FOREIGN KEY (Receive_EmailID)
REFERENCES Email (Email_ID)
GO
/********************************************************************************/
再下面是触发器的代码IF EXISTS (SELECT * FROM SYSOBJECTS WHERE xtype='TR' AND NAME = 'T_INSERT_Email_Message')
DROP TRIGGER T_INSERT_Email_Message
GO
/****触发器 发送邮件***/
CREATE TRIGGER T_INSERT_Email_Message
ON Email_Message
FOR INSERT
AS
BEGIN
DECLARE @Send_EmailID int,@Receive_EmailID int,@Save_State int
SELECT @Save_State = IS_Draft,@Send_EmailID=Send_EmailID,@Receive_EmailID=Receive_EmailID FROM INSERTED
IF(@Save_State=1)
BEGIN
UPDATE Email SET Email_Draft = Email_Draft + 1 WHERE Email_ID = @Send_EmailID
END
ELSE
BEGIN
UPDATE Email SET Email_Sented = Email_Sented + 1 WHERE Email_ID = @Send_EmailID
UPDATE Email SET Email_Receive = Email_Receive + 1 WHERE Email_ID = @Receive_EmailID
UPDATE Email SET Email_UnRead = Email_UnRead + 1 WHERE Email_ID = @Receive_EmailID
END
END现在的问题是当我在 Management Studio 进行INSERT时 Email的发件箱,收件箱,未读邮件数目会自动更改
但是当我用hibernate在Web页面进行数据添加的时候Email的列没有任何的改变
请问 是我哪里出错了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货