2016-11-04 6 views
0

이 기본 데이터베이스로 트리거를 작성하는 방법을 배우기 시작했습니다.SQL 서버 트리거를 삽입 할 수 없습니다

나는 또한 매우 첫 번째 데이터베이스를 만들고 있습니다.

스키마

:

TeamID int PK (TeamID int IDENTITY(0,1) CONSTRAINT TeamID_PK PRIMARY KEY) 
TeamName nvarchar(100) 

역사 :

HistoryID int PK (HistoryID int IDENTITY(0,1) CONSTRAINT HistoryID_PK PRIMARY KEY) 
TeamID int FK REF Team(TeamID) 
WinCount int 
LoseCount int 

내 트리거 : 새로운 팀이 삽입 될 때, 그것은 그와 함께 새로운 역사 행을 삽입한다을 팀 ID

CREATE TRIGGER after_insert_Player 
ON Team 
FOR INSERT 
AS 
BEGIN 
    INSERT INTO History (TeamID, WinCount, LoseCount) 
     SELECT DISTINCT i.TeamID 
     FROM Inserted i 
     LEFT JOIN History h ON h.TeamID = i.TeamID 
          AND h.WinCount = 0 AND h.LoseCount = 0 
END 

삽입 목록보다 적은 항목을 포함하는 INSERT 문에 대한 선택 목록을 반환 실행 된. SELECT 값의 수는 INSERT 컬럼의 수와 일치해야합니다.

감사합니다. SQL Server를 사용 중입니다

+1

오류가 트리거와 관련이 없습니다. 삽입을 위해 3 개의 열이 있지만 2 개의 열만 선택하고 있습니다. – KumarHarsh

답변

3

오류 텍스트가

당신은 세 개의 열

(TeamID,WinCount,LoseCount)i.TeamID에서 하나 개의 값을 삽입하려고 .. 너무 분명하다, 최고의 가이드는 이러한 WinCountLoseCount을 고려하십시오.


: 나는 당신이 실제 열로하지 표현식으로 WinCountLoseCount를 선택해야합니다, History 테이블의 구조를 다시 방문 할 필요가 있다고 생각합니다.

+0

나는 지금 이해했다. 고마워요. –

+0

@KitsuneHifu 도와 주셔서 감사합니다 :) –

0

삽입 열을 지정하면 채울 열을 지정할 수 있습니다. 그러나 귀하의 경우 삽입 직후에 하나의 열 (팀 ID) 만 선택하십시오.

삽입과 같이 3 개 필드를 검색하려면 하나의 열만 포함하도록 수정하거나 선택해야합니다. 삽입하는 동안

0

값을 삽입해야하는 열을 언급하면 ​​(INSERT-SELECT 사용).

SELECT 문에는 삽입하도록 지정된 열 수가 포함되어야합니다. 또한 데이터 유형이 동일한 지 확인하십시오 (그렇지 않은 경우 몇 가지 문제가 발생할 수 있습니다).

관련 문제