SQL Server 2008에 저장 프로 시저가 있습니다.이 저장 프로 시저의 작업은 매우 간단합니다. 데이터를 테이블에 삽입합니다. 해당 테이블의 열 중 하나가 varchar 유형이고 해당 열의 데이터 유효성 검사에 문제가 있습니다. 클라이언트 코드가 전달되는 모든 값을 수락합니다. 이는 발생할 것으로 예상됩니다. 그 칼럼에 'NEW'를 삽입하지 말라고 들었습니다. 클라이언트 코드는 신비하게도 'NEW'를 저장 프로 시저 매개 변수로 보내고 저장 프로 시저는 그 값을 그대로 삽입합니다. 나는 이것이 클라이언트 코드에 의해 처리되어야 함을 이해한다. 그러나 테이블 데이터에 대한 책임은 - 저장 프로 시저가 'NEW'를 찾을 때 예외를 던질 계획입니다. 이것을 어떻게 할 수 있습니까?저장 프로 시저의 데이터 유효성 검사
이 내 저장 프로 시저의 형식입니다 :
ALTER PROCEDURE Object_Save
@Id int = 0 OUTPUT
,@OrderId int
,@OrderNumber varchar(20)
AS
BEGIN TRY
IF @Id = 0
BEGIN
INSERT INTO Table_Order(OrderId, OrderNumber)
VALUES (@OrderID, @OrderNumber)
Set @Id = SCOPE_IDENTITY()
END
ELSE
BEGIN
-- Update
END
END TRY
BEGIN CATCH
exec error_catch
END CATCH
식으로 뭔가를 할 수있는 것 같아요 그 자체? –
제약 조건을 고려했지만 관리자가 레코드 삭제를 허용하지 않습니다. 활성/비활성 레코드를 추적하는 '삭제됨'플래그가 있습니다. 일단 삽입되면 삭제가 허용되지 않습니다. –
말 그대로 'NEW'라는 단어를 삽입하고 싶지 않습니까? 그것을 제거하거나 실패하고 싶습니까? 매개 변수 클라이언트가 값 "New"를 전달하는 – Andrew