테이블에 새로운 행이 생성 될 때마다 실행되는 트리거를 생성하려고합니다. 이런 일이 발생하면 행 삽입 방법을 반영하는 삽입 쿼리가 준비됩니다. 이 쿼리는 다른 데이터베이스의 테이블에 저장됩니다. 삽입 트리거시 데이터베이스에 문자열을 삽입하십시오.
는 설명하기 :- 데이터베이스 A는 테이블 제품 (ID, 이름, 기간, isavailable)가 있습니다.
- 데이터베이스 B는 테이블 상 mysql_query (ID, 쿼리) 새로운 로우 (1001 '테스트 제품', 365은, 1) A.products 삽입
있고, 트리거가에 다음을 삽입해야 B.mysql_query :
INSERT INTO products (id, name, duration, value, isavailable)
VALUES (1001, test product, 365, 1, 1)
값은 기본적으로 항상 1입니다.
지금까지 트리거에 대한 코드는 다음과 같습니다
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER c_products
ON migrimi_test.dbo.products
AFTER INSERT
AS
DECLARE @c_id INT;
SET @c_id = (SELECT id from inserted);
DECLARE @c_name INT;
SET @c_name = (SELECT name from inserted);
DECLARE @c_duration INT;
SET @c_duration = (SELECT duration from inserted);
DECLARE @c_isavailable INT;
SET @c_isavailable = (SELECT isvisible from inserted);
BEGIN
SET NOCOUNT ON
INSERT INTO migrimi_temp.dbo.mysql_query (id, mysql_query)
VALUES (DEFAULT, 'INSERT INTO products (id, name, duration, value, isavailable) values ('+CAST(@c_id as nvarchar(50))+', '+'"'[email protected]_name'+'"'+, '[email protected]_duration+', 1, '[email protected]_isavailable+')')
END
GO
나는 방아쇠를 실행하고 후자 삽입을 수행합니다. 이 오류 속담이다 :
Conversion failed when converting the nvarchar value 'test product' to data type int.
나는 그것이 변수 @c_name
의 대체를 의미 이해는하지만 이것은 내가 쓰는 첫 번째 트리거, 그리고 내가 정확히 어떤 문제가 있는지 알 수 없습니다.
A와 B는 SQL 데이터베이스입니다.
WEI_DBA는 지적1, @c_name이 선언 INT 그것이 VARCHAR 사실에도 불구하고, :
'DECLARE @c_name INT; SET @c_name = (삽입 된 이름 선택),'name is nvarchar ...'@ c_name'을 nvarchar 데이터 유형으로 변경합니다. –
또한, 하나의'Select' 문을 사용할 수 있습니다. '@c_id = id, @c_name = 이름, @c_duration = duration, @c_isavailable = 삽입 된 것으로부터의 보이지 않는 것 –
@WEI_DBA : 네가 맞았다. 문자열이라도 변수 c_name을 int로 선언했다. 케이스). 또한 또 다른 오류가 발생했습니다. 그 질문의 업데이 트에 반영됩니다. 하지만 여전히 이와 비슷한 오류가 발생합니다. –