database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 5682 게시물 읽기
No. 5682
[질문] 트리거에서 에러처리
작성자
김면수(kmshsn)
작성일
2010-06-16 17:18
조회수
6,653

안녕하세요.

A라는 Insert 트리거에서 B라는 테이블에 어떠한 값을 Insert합니다.

그런데 B가 ForeignKey가 잡혀있어서 에러가 날때가 있습니다.

트리거내부에서 이처럼 ForeignKey 에러발생시 A 테이블에 Insert가 안됩니다.

트리거에러와 상관없이 A에 Insert를 할 수 있을까요?

 

답변 꼭 바랍니다.

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

대략 이런 식일 듯

if object_id('tbB') is not null
    drop table tbB
go

if object_id('tbA') is not null
    drop table tbA
go

CREATE TABLE tbA
(
    a  int  NOT NULL ,
    name  varchar(10)  NULL
)
go


ALTER TABLE tbA
    ADD CONSTRAINT  XPKtbA PRIMARY KEY   CLUSTERED (a  ASC)
go


CREATE TABLE tbB
(
    a  int  NOT NULL ,
    name  varchar(10)  NULL
)
go


ALTER TABLE tbB
    ADD CONSTRAINT  XPKtbB PRIMARY KEY   CLUSTERED (a  ASC)
go



ALTER TABLE tbB
    ADD CONSTRAINT  R_1 FOREIGN KEY (a) REFERENCES tbA(a)
go




create trigger trg_insert_tbB
on tbB
instead of insert
as
begin
    set nocount on
    insert into tbA (a, name)
        select x.*
        from inserted x
        left outer join  tbA y
        on x.a = y.a
        where
            y.a is null
   
    if @@rowcount > 0  begin
        insert into tbB
            select * from inserted
    end
end
go

insert into tbB (a, name)
    select 1, '가'
go
   
   
select * from tba
select * from tbb
 

.님이 2010-06-17 15:36에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5685특정 테이블 UPDATE 문제
양상희
2010-06-17
6043
5684[질문]두개의 필드를 붙여서 보이거나 비교시 쿼리 [1]
초보자
2010-06-17
6061
5683windows server 2008 R2 문의...드립니다.. [1]
와니
2010-06-16
6361
5682[질문] 트리거에서 에러처리 [1]
김면수
2010-06-16
6653
5680오라클 구문을 ms-sql로 변경하고 싶습니다~알켜주세요~ [1]
정필준
2010-06-13
5985
5679공부중 질문드립니다 ㅠㅠ [1]
대학생
2010-06-09
6083
5678날짜에 대해서 Group By 조회가 되기도 하고 안되고도 하고...ㅠㅠ [1]
김동천
2010-06-09
6556
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다