我用查询语句在表中查不到记录。好像隐藏了一样。怎么回事啊。知道的大侠帮帮忙。谢谢先。

liangbing 2007-08-09 10:43:39
我用如下语句插入记录:
insert into ST_PPTN_R(STCD,TM,INTV,DRP,WTH) values('20700110','2007-08-08 20:00:00',3,26,'8')
错误提示:
服务器: 消息 2627,级别 14,状态 1,过程 TR_ST_PPTN_R,行 4
违反了 PRIMARY KEY 约束 'PK_ST_PPTN_R'。不能在对象 'ST_PPTN_R' 中插入重复键。
语句已终止。

我用查询语句在表中还查不到这条记录。好像隐藏了一样。怎么回事啊。知道的大侠帮帮忙。
...全文
199 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
select distinct * from inserted
paoluo 2007-08-09
  • 打赏
  • 举报
回复
哦,又沒注意到庫名,真是粗心。

如果當前庫不是lnfx, 觸發器最好做下修改

Alter TRIGGER [TR_ST_PPTN_R] ON [dbo].[ST_PPTN_R]
AFTER INSERT
AS
insert into lnfx.dbo.ST_PPTN_R
select * from inserted I
Where Not Exists(Select STCD From lnfx.dbo.ST_PPTN_R Where STCD = I.STCD And TM = I.TM)
GO
zjcxc 2007-08-09
  • 打赏
  • 举报
回复
他是插入到 Infx 库啊, 如果触发器所在表的库不不是 Infx, 则这个触发器是正常的, 否则的话, 当然是插入不了任何记录
paoluo 2007-08-09
  • 打赏
  • 举报
回复
zjcxc(邹建),我覺得這個觸發器有點多余,在插入之後,又插入一次,沒看到作用,反而會出問題。

最好禁用掉。

或者是不是要插入另一個表,但是表名寫錯了。
zjcxc 2007-08-09
  • 打赏
  • 举报
回复
CREATE TRIGGER [TR_ST_PPTN_R] ON [dbo].[ST_PPTN_R]
AFTER INSERT
AS
insert into lnfx.dbo.ST_PPTN_R select * from inserted


-----------------------------------------------
楼主应该检查 lnfx.dbo.ST_PPTN_R 表有没有同样的主键, 如果有的话, 如果此表已经有你要插入的数据, 则当然会导致失败.
paoluo 2007-08-09
  • 打赏
  • 举报
回复
以後如果想重新啟用這個觸發器,使用這句代碼

ALTER TABLE ST_PPTN_R ENABLE TRIGGER TR_ST_PPTN_R
paoluo 2007-08-09
  • 打赏
  • 举报
回复
你這個觸發器沒什麼作用,反而有問題。

采用以下代碼將觸發器禁用掉

ALTER TABLE ST_PPTN_R DISABLE TRIGGER TR_ST_PPTN_R

或者直接刪除掉你的觸發器。

不過保險起見,還是禁用掉好些。
livan1038 2007-08-09
  • 打赏
  • 举报
回复
主键重复肯定不行了.
將TR_ST_PPTN_R的代碼貼出來看看
zjcxc 2007-08-09
  • 打赏
  • 举报
回复
执行下面的语句:

use 你的库名
exec sp_helptext 'TR_ST_PPTN_R'


输出的结果就是触发器代码
paoluo 2007-08-09
  • 打赏
  • 举报
回复
liangbing(再别中秋) ( ) 信誉:100 2007-08-09 11:02:21 得分: 0


STCD,TM, 这2个都是主键。
触发器代码怎么看。:(


---------------------------------------
paoluo(一天到晚游泳的鱼) ( ) 信誉:100 2007-08-09 11:02:15 得分: 0


選中表,點右鍵,選擇“所有工作”-->“管理觸發程序”,然後在名稱中選擇“TR_ST_PPTN_R”,將其中的代碼復制出來看看。


我這是繁體的,不過你所看到的文字應該是類似的。
liangbing 2007-08-09
  • 打赏
  • 举报
回复
CREATE TRIGGER [TR_ST_PPTN_R] ON [dbo].[ST_PPTN_R]
AFTER INSERT
AS
insert into lnfx.dbo.ST_PPTN_R select * from inserted

这样。
liangbing 2007-08-09
  • 打赏
  • 举报
回复
STCD,TM, 这2个都是主键。
触发器代码怎么看。:(
paoluo 2007-08-09
  • 打赏
  • 举报
回复
選中表,點右鍵,選擇“所有工作”-->“管理觸發程序”,然後在名稱中選擇“TR_ST_PPTN_R”,將其中的代碼復制出來看看。
yangpeiyu 2007-08-09
  • 打赏
  • 举报
回复
Up!有道理
liangbing 2007-08-09
  • 打赏
  • 举报
回复
触发器是什么,迷糊。
paoluo 2007-08-09
  • 打赏
  • 举报
回复
zjcxc(邹建) ( ) 信誉:673 2007-08-09 10:52:32 得分: 0


服务器: 消息 2627,级别 14,状态 1,过程 TR_ST_PPTN_R,行 4
违反了 PRIMARY KEY 约束 'PK_ST_PPTN_R'。不能在对象 'ST_PPTN_R' 中插入重复键。

-----------------------------------------------------------------------

TR_ST_PPTN_R 是触发器吧? 而且出错行是4, 看样子不是你的插入语句出错, 而是表 ST_PPTN_R 中触发器的处理出错


-------------

還是老大眼睛厲害,注意到TR了。

樓主貼出你的觸發器代碼,應該是觸發器寫的有問題。
paoluo 2007-08-09
  • 打赏
  • 举报
回复
ljsql(第 1 行: '脑子' 附近有语法错误。)
--------------------
你也沒看明白。 :)

zjcxc 2007-08-09
  • 打赏
  • 举报
回复
楼主检查一下触发器中的处理, 应该是触发器的问题.
肥胖的柠檬 2007-08-09
  • 打赏
  • 举报
回复
意思就是你的表有一个主键,这个列是不能有重复的数据的,你这插入了一条重复的数据,就错误,就插入失败了
zjcxc 2007-08-09
  • 打赏
  • 举报
回复
服务器: 消息 2627,级别 14,状态 1,过程 TR_ST_PPTN_R,行 4
违反了 PRIMARY KEY 约束 'PK_ST_PPTN_R'。不能在对象 'ST_PPTN_R' 中插入重复键。

-----------------------------------------------------------------------

TR_ST_PPTN_R 是触发器吧? 而且出错行是4, 看样子不是你的插入语句出错, 而是表 ST_PPTN_R 中触发器的处理出错
加载更多回复(7)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧