데이터베이스: 저장 프로세스와 트리거
4595 단어 데이터베이스
저장 프로세스는 데이터베이스 디렉토리에 저장된 선언적인 SQL 문입니다.저장 프로세스는 데이터베이스에서 중요한 대상으로 사용자가 저장 프로세스의 이름을 지정하고 파라미터를 주어 실행한다.
스토리지 프로세스의 이점:
① SQL 문장의 기능과 유연성을 강화했다.② 일련의 처리 절차를 반복하지 않아도 데이터의 완전성을 확보할 수 있다.③ 네트워크의 통신량을 낮추고 클라이언트가 저장 프로세스를 호출할 때 저장 프로세스 이름과 관련 매개 변수만 전달하면 된다. SQL 문장을 전송하는 것에 비해 자연 데이터량이 많이 줄어든다.④ 사용 안전성을 강화하고 저장 과정을 통해 권한이 없는 사용자가 통제하에 간접적으로 데이터베이스를 저장하여 데이터의 안전을 확보할 수 있다.⑤ 집중 제어를 실현할 수 있으며 규칙이 바뀔 때 저장 과정을 수정하면 된다.
스토리지 프로세스의 단점:
① 디버깅이 쉽지 않다 ② 저장 프로세스를 만들 권리가 없을 수도 있다 ③ 재컴파일 문제 ④ 이식성 문제
스토리지 프로세스의 분류:
1) 시스템 스토리지 프로세스: sp시작은 시스템의 각종 설정을 진행하는 데 쓰인다.정보를 얻다.관련 관리 업무.
2) 로컬 저장 프로세스: 사용자가 만든 저장 프로세스는 사용자가 특정한 기능을 만들고 완성하는 저장 프로세스로 사실상 일반적으로 말하는 저장 프로세스는 로컬 저장 프로세스를 가리킨다.
3) 임시 저장 프로세스:
① 부분적인 임시 저장 프로세스가 우물 번호(#)를 이름의 첫 번째 문자로 하면 이 저장 프로세스는tempdb 데이터베이스에 저장된 로컬 임시 저장 프로세스가 되고 이를 만든 사용자만 실행할 수 있다.
② 글로벌 임시 저장 프로세스가 두 개의 우물 번호(##) 번호로 시작되면 이 저장 프로세스는tempdb 데이터베이스에 저장된 글로벌 임시 저장 프로세스가 되고 글로벌 임시 저장 프로세스가 만들어지면 서버에 연결된 모든 사용자가 실행할 수 있으며 특정한 권한이 필요하지 않습니다.
4) 원격 저장 프로세스: SQL Server 2005에서 원격 저장 프로세스(Remote Stored Procedures)는 원격 서버에 있는 저장 프로세스로 분포식 조회와 EXECUTE 명령을 사용하여 원격 저장 프로세스를 수행할 수 있다.
5) 확장 저장 프로세스: 확장 저장 프로세스(Extended Stored Procedures)는 사용자가 외부 프로그램 언어로 작성할 수 있는 저장 프로세스이며, 확장 저장 프로세스의 이름은 보통 xp서두
저장 프로세스의 매개 변수를 만들려면 다음과 같이 하십시오.
procedure_name: 저장 프로세스의 이름입니다. 앞에 #을 추가하면 국부 임시 저장 프로세스이고 #을 추가하면 전역 임시 저장 프로세스입니다.
number: DROP PROCEDURE 문구로 같은 그룹의 과정을 함께 제거할 수 있도록 선택할 수 있는 정수입니다.
parameter: 프로세스를 저장하는 매개 변수입니다.하나 이상 있을 수 있습니다.이 매개변수의 기본값이 정의되지 않은 경우 사용자는 프로세스를 수행할 때 선언된 각 매개변수의 값을 제공해야 합니다.
data_type: 매개 변수의 데이터 형식입니다.모든 데이터 형식 (text,ntext,image 포함) 은 저장 프로세스의 매개 변수로 사용할 수 있습니다.
VARYING: 출력 매개변수로 지원되는 결과 세트를 지정합니다(저장 프로세스에 의해 동적으로 구성되며 내용은 변경될 수 있음).커서 매개 변수에만 적용됩니다.
default: 매개 변수의 기본값입니다.기본값을 정의한 경우 프로세스를 실행하기 위해 매개 변수의 값을 지정하지 않아도 됩니다.기본값은 상수 또는 NULL이어야 합니다.
OUTPUT: 매개변수가 반환됨을 나타냅니다.
RECOMPILE: SQL Server에서 이 프로세스의 계획을 캐시하지 않으며 런타임에 다시 컴파일됩니다.
ENCRYPTION: SQL Server 암호화를 나타냅니다.
FOR REPLICATION: 구독 서버에서 복사를 위한 저장 프로세스를 실행할 수 없음을 지정합니다.
AS: 프로세스에서 수행할 작업을 지정합니다.
sql_statement: 과정에 포함될 임의의 수량과 유형의Transact-SQL 문장입니다.하지만 제한이 있다.
스토리지 프로세스를 호출하려면 다음과 같이 하십시오.
1) 스토리지 생성 프로세스:
Create PROCEDURE ( )
begin
end;
예:
저장 프로세스를 만들려면 다음과 같이 하십시오.
create procedure porcedureName ()
begin
select name from user;
end;
2) 스토리지 프로세스를 호출합니다.
call
예:
call porcedureName();
3) 저장 프로세스를 삭제합니다.
DROP PROCEDURE
트리거:
트리거는 사용자가 관계표에 정의한 이벤트로 구동되는 특수한 저장 과정이다.트리거는 어떤 사건을 트리거할 때 자동으로 이 코드를 실행하는 코드를 가리킨다.
트리거 기능:
(1) 강화 구속(Enforce restriction)은 CHECK 문구보다 더 복잡한 구속을 구현할 수 있습니다.
(2) 변경 내용 추적(Auditing changes)은 데이터베이스 내의 작업을 탐지하여 데이터베이스에서 허가되지 않은 지정된 업데이트와 변화를 허용하지 않는다.
(3) 캐스케이드 실행(Cascaded operation)은 데이터베이스 내의 작업을 탐지하고 전체 데이터베이스에 영향을 주는 각종 내용을 자동으로 단계적으로 연결할 수 있다.예를 들어 어떤 테이블의 트리거에는 다른 테이블에 대한 데이터 조작(예를 들어 삭제, 업데이트, 삽입)이 포함되어 있고 이 조작은 이 테이블의 트리거를 트리거한다.
(4) 저장 프로세스의 호출(Stored procedure invocation)은 데이터베이스 업데이트에 응답하기 위해 트리거는 하나 이상의 저장 프로세스를 호출할 수 있고 외부 프로세스의 호출을 통해 DBMS(데이터베이스 관리 시스템) 자체 밖에서 조작할 수 있다.
트리거의 제한 사항:
1) 트리거 프로그램은 데이터를 클라이언트에게 되돌려주는 저장 프로그램을 호출할 수 없고 CALL 문구를 사용하는 동적 SQL 문구를 사용할 수 없다. 그러나 저장 프로그램이 파라미터를 통해 데이터를 트리거 프로그램으로 되돌려주는 것을 허용한다. 즉, 저장 과정이나 함수가 OUT 또는 INOUT 유형의 참수를 통해 데이터를 트리거로 되돌려주는 것은 가능하지만 직접 데이터를 되돌려주는 과정을 호출할 수 없다.2) 트리거에서 업무를 표시하거나 은밀하게 시작하거나 끝내는 문장을 사용할 수 없다.
트리거 만들기:
(1) 실행 문장만 있는 트리거 만들기
구문 구조는 다음과 같습니다.
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_stmt
trigger_name: 사용자 정의 트리거 이름;trigger_time: 표지 트리거 이벤트는before(시간 발생 전 실행) 또는after(사건 발생 후 실행)로 지정할 수 있습니다.trigger_이벤트: INSERT, UPDATE, DELETE를 포함한 트리거 이벤트를 식별합니다.table_name: 트리거는 어느 테이블에 세워져 있습니까?trigger_stmt: 트리거 실행 문장입니다.
(2) 여러 개의 실행 문장이 있는 트리거 만들기
구문 구조는 다음과 같습니다.
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW
BEGIN
END
[트리거에 최소한 하나의 실행 문구가 있을 때 여러 개의 실행 문구는 BEGIN과 END로 감싸서 전체 코드 블록의 시작과 끝을 표시해야 한다.]
트리거를 보려면 다음과 같이 하십시오.
show triggers;
트리거 삭제하기
DROP TRIGGER [schema_name] trigger_name;
【schema name: 데이터베이스 이름을 나타내고 선택할 수 있는 파라미터를 표시하며, 생략하면 현재 데이터베이스에서 트리거를 삭제합니다. 】
읽어주셔서 감사합니다. 더 많은 자바 기초 지식을 얻으려면 나를 찌르다 함께 교류하고 배울 수 있습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.