Contents

About Triggers

   Sep 14, 2024     1 min read

νŠΈλ¦¬κ±°μ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”!

트리거(Trigger)λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΉμ • μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

이λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œμ˜ μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이제 λ°μ΄ν„°λ² μ΄μŠ€ 트리거의 κ°œλ…, μ’…λ₯˜, ν™œμš©μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

트리거의 κ°œλ…

νŠΈλ¦¬κ±°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΉμ • ν…Œμ΄λΈ”μ— λŒ€ν•œ INSERT, UPDATE, DELETE λ“±μ˜ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

이λ₯Ό 톡해 νŠΉμ • 쑰건을 κ°μ‹œν•˜κ³  μ›ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

주둜 λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•˜κ±°λ‚˜ νŠΉμ • 쑰건을 κ²€μ‚¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

트리거의 μ’…λ₯˜

  • AFTER 트리거: μ΄λ²€νŠΈκ°€ λ°œμƒν•œ 후에 νŠΈλ¦¬κ±°κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€. 주둜 μ΄λ²€νŠΈμ— λ”°λ₯Έ 후속 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • BEFORE 트리거: μ΄λ²€νŠΈκ°€ λ°œμƒν•˜κΈ° 전에 νŠΈλ¦¬κ±°κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€. 주둜 이벀트λ₯Ό λ°œμƒμ‹œν‚€κΈ° 전에 νŠΉμ • 쑰건을 κ²€μ‚¬ν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

트리거의 ν™œμš©

  • λ°μ΄ν„°μ˜ 일관성 μœ μ§€: 트리거λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œμ˜ μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ œμ•½ 쑰건 μΆ”κ°€: 트리거λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • 쑰건을 κ²€μ‚¬ν•˜κ³  μ œμ•½ 쑰건을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ™Έλž˜ ν‚€ μ œμ•½ 쑰건을 μΆ”κ°€ν•˜κ±°λ‚˜ 쀑볡 데이터λ₯Ό 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 둜그 μž‘μ„±: 트리거λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ 둜그λ₯Ό μž‘μ„±ν•˜κ±°λ‚˜ μ•Œλ¦Όμ„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³€κ²½ 이λ ₯을 μΆ”μ ν•˜κ±°λ‚˜ 비정상적인 λ™μž‘μ„ 감지할 수 μžˆμŠ΅λ‹ˆλ‹€.

트리거의 μž₯단점

  • μž₯점:

    • λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ•ˆμ •μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 반볡적인 μž‘μ—…μ„ μžλ™ν™”ν•˜μ—¬ 개발 μ‹œκ°„μ„ λ‹¨μΆ•ν•˜κ³  μœ μ§€λ³΄μˆ˜μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.
    • νŠΉμ • μ΄λ²€νŠΈμ— λŒ€ν•œ 둜그λ₯Ό μž‘μ„±ν•˜κ±°λ‚˜ μ•Œλ¦Όμ„ λ³΄λ‚΄λŠ” λ“±μ˜ μΆ”κ°€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • 단점:

    • 잘λͺ»λœ 트리거 μ½”λ“œ μž‘μ„±μœΌλ‘œ 인해 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„±λŠ₯이 μ €ν•˜λ  수 μžˆμŠ΅λ‹ˆλ‹€.
    • νŠΈλ¦¬κ±°κ°€ λ³΅μž‘ν•΄μ§€λ©΄ 관리와 디버깅이 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

마치며

νŠΈλ¦¬κ±°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΉμ • μ΄λ²€νŠΈμ— λ°˜μ‘ν•˜μ—¬ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” μ½”λ“œλ‘œ, λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•˜κ³  μž‘μ—…μ„ μžλ™ν™”ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ‹€λ£° λ•Œ 트리거λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ•ˆμ •μ„±κ³Ό νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€!