{"id":28690,"date":"2021-07-28T14:44:26","date_gmt":"2021-07-28T07:44:26","guid":{"rendered":"https:\/\/wiki.tino.org\/staging\/?p=28690"},"modified":"2021-07-29T13:51:21","modified_gmt":"2021-07-29T06:51:21","slug":"trigger-trong-sql","status":"publish","type":"post","link":"https:\/\/tino.vn\/blog\/trigger-trong-sql\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn c\u00e1ch s\u1eed d\u1ee5ng Trigger trong SQL"},"content":{"rendered":"\n<p><strong>Khi nh\u1eadp m\u00f4n c\u01a1 s\u1edf d\u1eef li\u1ec7u, b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c g\u1eb7p kh\u00e1i ni\u1ec7m Trigger. V\u1eady Trigger l\u00e0 g\u00ec? C\u00e1c c\u00e2u l\u1ec7nh Trigger trong SQL ra sao?  Tino Group s\u1ebd \u0111\u01b0a ra nh\u1eefng v\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n \u0111\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 v\u1ec1 Trigger nh\u00e9!<\/strong><\/p>\n\n\n\n<h2 id=\"Trigger_l\u00e0_g\u00ec?\"><a id=\"post-28690-_jkhgqfsdgmzz\"><\/a><strong>Trigger l\u00e0 g\u00ec?<\/strong><\/h2>\n\n\n\n<p><strong>Trigger <\/strong>l\u00e0 m\u1ed9t stored procedure kh\u00f4ng c\u00f3 tham s\u1ed1, khi c\u00f3 m\u1ed9t event nh\u01b0: <strong>Th\u00eam, c\u1eadp nh\u1eadt <\/strong>hay <strong>x\u00f3a <\/strong>trong c\u01a1 s\u1edf d\u1eef li\u1ec7u x\u1ea3y ra Trigger s\u1ebd th\u1ef1c thi t\u1ef1 \u0111\u1ed9ng thay \u0111\u1ed5i d\u1eef li\u1ec7u.<\/p>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Trigger tr\u00ean r\u1ea5t nhi\u1ec1u ph\u1ea7n m\u1ec1m qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u. Nh\u01b0ng trong b\u00e0i vi\u1ebft n\u00e0y, Tino Group s\u1ebd h\u01b0\u1edbng d\u1eabn b\u1ea1n s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m SQL Server c\u1ee7a Microsoft \u0111\u1ec3 th\u1ef1c hi\u1ec7n b\u1ea1n nh\u00e9!<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1521.png\" alt=\"trigger-trong-sql\" class=\"wp-image-28692\" width=\"562\" height=\"337\" title=\"\" srcset=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1521.png 600w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1521-300x180.png 300w\" sizes=\"(max-width: 562px) 100vw, 562px\" \/><\/figure><\/div>\n\n\n\n<p>SQLs s\u1ebd cung c\u1ea5p cho b\u1ea1n 3 lo\u1ea1i Trigger ch\u00ednh nh\u01b0 sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Trigger DML<\/strong> s\u1ebd \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t khi xay ra c\u00e1c s\u1ef1 ki\u1ec7n: insert, update v\u00e0 delete v\u1edbi d\u1eef li\u1ec7u tr\u00ean b\u1ea3ng.<\/li><li><strong>Trigger DDL <\/strong>\u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t khi x\u1ea3y ra c\u00e1c l\u1ec7nh nh\u01b0: create, alter v\u00e0 drop.<\/li><li><strong>Trigger Logon<\/strong> s\u1ebd t\u1ef1 \u0111\u1ed9ng k\u00edch ho\u1ea1t tr\u01b0\u1edbc khi c\u00e1c s\u1ef1 ki\u1ec7n logon x\u1ea3y ra.<\/li><\/ul>\n\n\n\n<h3 id=\"Khi_n\u00e0o_n\u00ean_s\u1eed_d\u1ee5ng_Trigger_SQL?\"><a id=\"post-28690-_9udithuoj6t3\"><\/a><strong>Khi n\u00e0o n\u00ean s\u1eed d\u1ee5ng Trigger SQL?<\/strong><\/h3>\n\n\n\n<p>C\u00f3 r\u1ea5t nhi\u1ec1u c\u00e1ch \u0111\u1ec3 s\u1eed d\u1ee5ng Trigger, r\u1ea5t nhi\u1ec1u l\u1eadp tr\u00ecnh vi\u00ean s\u1eed d\u1ee5ng Trigger \u0111\u1ec3:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ki\u1ec3m tra r\u00e0ng bu\u1ed9c tr\u00ean nhi\u1ec1u quan h\u1ec7 ho\u1eb7c nhi\u1ec1u d\u00f2ng c\u1ee7a b\u1ea3ng c\u01a1 s\u1edf d\u1eef li\u1ec7u.<\/li><li>S\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o c\u00e1c h\u00e0m ng\u1ea7m ph\u1ee5c v\u1ee5 cho m\u1ed9t s\u1ed1 m\u1ee5c nh\u1ea5t \u0111\u1ecbnh, tuy nhi\u00ean, nh\u1eefng tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng h\u00e0m ng\u1ea7m l\u00e0 r\u1ea5t hi\u1ebfm v\u00e0 kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng trong c\u00e1c m\u1ee5c \u0111\u00edch nh\u01b0: kinh doanh &#8211; giao d\u1ecbch thanh to\u00e1n.<\/li><li>S\u1eed d\u1ee5ng \u0111\u1ec3 kh\u00f4ng cho vi\u1ec7c x\u00f3a nh\u1eefng d\u1eef li\u1ec7u quan tr\u1ecdng x\u1ea3y ra.<\/li><\/ul>\n\n\n\n<h3 id=\"\u01afu_v\u00e0_nh\u01b0\u1ee3c_\u0111i\u1ec3m_c\u1ee7a_Trigger\"><a id=\"post-28690-_c6hd6fgr3fgl\"><\/a><strong>\u01afu v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Trigger<\/strong><\/h3>\n\n\n\n<h4 id=\"\u01afu_\u0111i\u1ec3m_c\u1ee7a_Trigger\"><a id=\"post-28690-_z591pl7hajdx\"><\/a><strong>\u01afu \u0111i\u1ec3m c\u1ee7a Trigger<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Code c\u1ee7a Trigger trong SQL r\u1ea5t d\u1ec5 h\u1ecdc, d\u1ec5 hi\u1ec3u v\u00e0 d\u1ec5 vi\u1ebft<\/li><li>T\u1ecf ra r\u1ea5t hi\u1ec7u qu\u1ea3 trong vi\u1ec7c ki\u1ec3m so\u00e1t nh\u1eefng thay \u0111\u1ed5i trong c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/li><li>L\u00e0 m\u1ed9t ph\u01b0\u01a1ng ph\u00e1p \u0111\u1ec3 th\u1ef1c hi\u1ec7n nhanh ch\u00f3ng nh\u1eefng c\u00f4ng vi\u1ec7c l\u00ean l\u1ecbch \u0111\u1ecbnh k\u1ef3<\/li><li>Kh\u1ea3 n\u0103ng b\u1eaft l\u1ed7i business logic n\u1eb1m \u1edf m\u1ee9c \u0111\u1ed9 c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/li><li>B\u1ea1n c\u00f3 th\u1ec3 vi\u1ebft l\u1ed3ng c\u00e1c Trigger l\u00ean \u0111\u1ebfn 32 c\u1ea5p \u0111\u1ed9! N\u1ebfu b\u1ea1n ch\u01b0a r\u00f5, b\u1ea1n c\u00f3 th\u1ec3 th\u1eed tham kh\u1ea3o b\u00e0i vi\u1ebft <a href=\"https:\/\/tino.vn\/blog\/huong-dan-su-dung-ham-if-nhieu-dieu-kien-trong-excel\/\">H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng h\u00e0m IF nhi\u1ec1u \u0111i\u1ec1u ki\u1ec7n trong Excel<\/a> \u0111\u1ec3 hi\u1ec3u ch\u00fang l\u1ed3ng nhau nh\u01b0 th\u1ebf n\u00e0o.<\/li><\/ul>\n\n\n\n<h4 id=\"Nh\u01b0\u1ee3c_\u0111i\u1ec3m_c\u1ee7a_Trigger\"><a id=\"post-28690-_10yk8kkdtjn9\"><\/a><strong>Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Trigger<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Trigger ch\u1ec9 h\u1ed7 tr\u1ee3 \u0111\u1ec3 ki\u1ec3m tra m\u1ee9c \u0111\u1ed9 h\u1ee3p l\u1ec7 c\u1ee7a c\u00e1c d\u1eef li\u1ec7u, \u0111i\u1ec1u ki\u1ec7n ch\u1ee9 kh\u00f4ng ho\u00e0n to\u00e0n thay th\u1ebf c\u00f4ng vi\u1ec7c ki\u1ec3m tra c\u1ee7a b\u1ea1n.<\/li><li>T\u1eeb ph\u00eda client, b\u1ea1n ch\u1ec9 c\u00f3 th\u1ec3 bi\u1ebft \u0111\u01b0\u1ee3c s\u1ef1 t\u1ed3n t\u1ea1i c\u1ee7a c\u00e1c Trigger n\u1ebfu nh\u00e0 cung c\u1ea5p g\u1eedi t\u00e0i li\u1ec7u cho b\u1ea1n.<\/li><li>Trigger ho\u1ea1t \u0111\u1ed9ng ng\u1ea7m, v\u00ec th\u1ebf b\u1ea1n c\u0169ng kh\u00f3 l\u00f2ng bi\u1ebft \u0111i\u1ec1u g\u00ec \u0111ang di\u1ec5n ra \u1edf ph\u00eda d\u01b0\u1edbi c\u01a1 s\u1edf d\u1eef li\u1ec7u.<\/li><li>Khi th\u1ef1c hi\u1ec7n c\u00e1c update, Trigger s\u1ebd l\u00e0m gia t\u0103ng l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c tr\u00ean c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 l\u00e0m h\u1ec7 th\u1ed1ng b\u1ecb ch\u1eadm.<\/li><li>C\u0169ng kh\u00e1 gi\u1ed1ng v\u1edbi h\u00e0m if nhi\u1ec1u \u0111i\u1ec1u ki\u1ec7n trong Excel, n\u1ebfu b\u1ea1n l\u1ed3ng qu\u00e1 nhi\u1ec1u \u0111i\u1ec1u ki\u1ec7n l\u1ea1i v\u1edbi nhau, vi\u1ec7c s\u1eeda l\u1ed7i, g\u1ee1 l\u1ed7i v\u00e0 kh\u1eafc ph\u1ee5c c\u00e1c s\u1ef1 c\u1ed1 l\u00e0 v\u00f4 c\u00f9ng kh\u00f3! \u0110\u1eb7c bi\u1ec7t l\u00e0 \u0111\u1ed1i v\u1edbi nh\u1eefng ng\u01b0\u1eddi kh\u00f4ng ph\u00e1t tri\u1ec3n c\u01a1 s\u1edf d\u1eef li\u1ec7u hay Trigger \u0111\u00f3 ngay t\u1eeb \u0111\u1ea7u.<\/li><li>Khi vi\u1ebft l\u1ec7nh Trigger, b\u1ea1n s\u1ebd ph\u1ea3i xem x\u00e9t \u0111\u1ebfn quy\u1ec1n c\u1ee7a c\u00e1c user, n\u1ebfu user c\u00f3 quy\u1ec1n after tr\u00ean b\u1ea3n c\u01a1 s\u1edf d\u1eef li\u1ec7u, h\u1ecd s\u1ebd c\u00f3 th\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a ch\u00fang.<\/li><\/ul>\n\n\n\n<h2 id=\"C\u00e2u_l\u1ec7nh_Trigger_trong_SQL\"><a id=\"post-28690-_6wdnrziuomzw\"><\/a><strong>C\u00e2u l\u1ec7nh Trigger trong SQL<\/strong><\/h2>\n\n\n\n<h3 id=\"M\u1eabu_v\u00ed_d\u1ee5\"><a id=\"post-28690-_ztb1wyt55c9\"><\/a><strong>M\u1eabu v\u00ed d\u1ee5<\/strong><\/h3>\n\n\n\n<p>\u0110\u1ec3 b\u00e0i vi\u1ebft sinh \u0111\u1ed9ng v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n, m\u1ed9t v\u00ed d\u1ee5 l\u00e0 v\u00f4 c\u00f9ng c\u1ea7n thi\u1ebft. \u0110\u00e2y l\u00e0 b\u1ea3n <strong>production.products<\/strong> thu\u1ed9c c\u01a1 s\u1edf d\u1eef li\u1ec7u <a href=\"https:\/\/comdy.vn\/sql-server\/gioi-thieu-sql-server\/#co-so-du-lieu-mau-cua-sql-server-11\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Bike Stores<\/a> t\u1ea1i trang Comdy.vn.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1522.png\" alt=\"trigger-trong-sql\" class=\"wp-image-28693\" width=\"426\" height=\"349\" title=\"\"><\/figure><\/div>\n\n\n\n<h3 id=\"C\u00e2u_l\u1ec7nh_create_Trigger_trong_SQL\"><a id=\"post-28690-_hrfud498blp4\"><\/a><strong>C\u00e2u l\u1ec7nh create Trigger trong SQL<\/strong><\/h3>\n\n\n\n<p>C\u00e2u l\u1ec7nh n\u00e0y s\u1ebd t\u1ef1 \u0111\u1ed9ng th\u1ef1c thi khi c\u00f3 b\u1ea5t c\u1ee9 m\u1ed9t s\u1ef1 ki\u1ec7n n\u00e0o nh\u01b0: insert, delete v\u00e0 update di\u1ec5n ra v\u1edbi b\u1ea3ng.<\/p>\n\n\n\n<p>C\u00e2u l\u1ec7nh nh\u01b0 sau:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>CREATE Trigger [schema_name.]Trigger_name<\/strong><\/p><p><strong>ON table_name<\/strong><\/p><p><strong>AFTER {[INSERT],[UPDATE],[DELETE]}<\/strong><\/p><p><strong>[NOT FOR REPLICATION]<\/strong><\/p><p><strong>AS<\/strong><\/p><p><strong>{SQL_statements}<\/strong><\/p><p>Ph\u00e2n t\u00edch ra, b\u1ea1n c\u00f3 th\u1ec3 th\u1ea5y c\u00fa ph\u00e1p n\u00e0y ch\u1ee9a:<\/p><p><strong>schema_name<\/strong> l\u00e0 t\u00ean schema c\u1ee7a Trigger, \u0111\u00e2y l\u00e0 m\u1ed9t t\u00f9y ch\u1ecdn, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam ho\u1eb7c kh\u00f4ng.<\/p><p><strong>Trigger_name<\/strong> l\u00e0 t\u00ean do ng\u01b0\u1eddi d\u00f9ng \u0111\u1eb7t.<\/p><p><strong>table_name<\/strong> l\u00e0 b\u1ea3ng ch\u00fang ta s\u1ebd \u00e1p d\u1ee5ng Trigger<\/p><\/blockquote>\n\n\n\n<h3 id=\"T\u1ea1o_b\u1ea3n_ghi_l\u1ea1i_s\u1ef1_ki\u1ec7n_INSERT_ho\u1eb7c_DELETE\"><a id=\"post-28690-_el55sa9vszvk\"><\/a><strong>T\u1ea1o b\u1ea3n ghi l\u1ea1i s\u1ef1 ki\u1ec7n INSERT ho\u1eb7c DELETE<\/strong><\/h3>\n\n\n\n<p>\u0110\u00e2y l\u00e0 m\u1ed9t vi\u1ec7c v\u00f4 c\u00f9ng c\u1ea7n thi\u1ebft, khi b\u1ea5t c\u1ee9 ai x\u00e2m ph\u1ea1m b\u1ea5t h\u1ee3p ph\u00e1p, b\u1ea1n v\u1eabn s\u1ebd c\u00f3 m\u1ed9t b\u1ea3ng l\u01b0u tr\u1eef \u0111\u1ec3 kh\u00f4i ph\u1ee5c l\u1ea1i n\u1ebfu c\u1ea7n thi\u1ebft.<\/p>\n\n\n\n<p>C\u00e2u l\u1ec7nh nh\u01b0 sau:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>CREATE Trigger production.trg_product_audit \/\/ <\/strong>s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o m\u1ed9t Trigger m\u1edbi<\/p><p><strong>ON production.products \/\/ <\/strong>ch\u1ec9 \u0111\u1ecbnh b\u1ea3ng ghi Trigger k\u00edch ho\u1ea1t khi c\u00f3 s\u1eeda \u0111\u1ed5i<\/p><p><strong>AFTER INSERT, DELETE \/\/<\/strong> th\u00eam c\u00e1c s\u1ef1 ki\u1ec7n khi\u1ebfn Trigger k\u00edch ho\u1ea1t<\/p><p><strong>AS \/\/ <\/strong>\u0111\u00e2y l\u00e0 ph\u1ea7n b\u1eaft \u0111\u1ea7u c\u1ee7a Trigger<\/p><p><strong>BEGIN<\/strong><\/p><p><strong> SET NOCOUNT ON; \/\/ <\/strong>thi\u1ebft l\u1eadp d\u00f9ng \u0111\u1ec3 ng\u0103n ch\u1eb7n th\u00f4ng b\u00e1o s\u1ed1 l\u01b0\u1ee3ng b\u1ea3ng ghi b\u1ecb \u1ea3nh h\u01b0\u1edfng cho \u0111\u1ebfn khi Trigger \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t.<\/p><p><strong> INSERT INTO production.product_audits( \/\/ <\/strong>\u0111\u00e2y l\u00e0 ph\u1ea7n to\u00e1n t\u1eeb union ALL<\/p><p><strong> product_id, <\/strong><\/p><p><strong> product_name,<\/strong><\/p><p><strong> brand_id,<\/strong><\/p><p><strong> category_id,<\/strong><\/p><p><strong> model_year,<\/strong><\/p><p><strong> list_price, <\/strong><\/p><p><strong> updated_at, <\/strong><\/p><p><strong> operation<\/strong><\/p><p><strong> )<\/strong><\/p><p><strong> SELECT<\/strong><\/p><p><strong> i.product_id,<\/strong><\/p><p><strong> product_name,<\/strong><\/p><p><strong> brand_id,<\/strong><\/p><p><strong> category_id,<\/strong><\/p><p><strong> model_year,<\/strong><\/p><p><strong> i.list_price,<\/strong><\/p><p><strong> GETDATE(),<\/strong><\/p><p><strong> &#8216;INS&#8217;<\/strong><\/p><p><strong> FROM<\/strong><\/p><p><strong> inserted i<\/strong><\/p><p><strong> UNION ALL<\/strong><\/p><p><strong> SELECT<\/strong><\/p><p><strong> d.product_id,<\/strong><\/p><p><strong> product_name,<\/strong><\/p><p><strong> brand_id,<\/strong><\/p><p><strong> category_id,<\/strong><\/p><p><strong> model_year,<\/strong><\/p><p><strong> d.list_price,<\/strong><\/p><p><strong> GETDATE(),<\/strong><\/p><p><strong> &#8216;DEL&#8217;<\/strong><\/p><p><strong> FROM<\/strong><\/p><p><strong> deleted d;<\/strong><\/p><p><strong>END<\/strong><\/p><\/blockquote>\n\n\n\n<p>Gi\u1edd \u0111\u00e2y, b\u1ea3ng production.product_audits \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam nh\u1eefng th\u00f4ng tin thu\u1ed9c b\u1ea3ng production.products. Khi c\u00f3 b\u1ea5t k\u1ef3 thay \u0111\u1ed5i g\u00ec x\u1ea3y ra, nh\u1eefng thay \u0111\u1ed5i s\u1ebd \u0111\u01b0\u1ee3c ghi nh\u1eadn t\u1ea1i c\u00e1c c\u1ed9t: updated_at, operation v\u00e0 change_id.<\/p>\n\n\n\n<p>Cu\u1ed1i c\u00f9ng, b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y Trigger c\u1ee7a b\u1ea1n t\u1ea1i \u0111\u00e2y:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1523.png\" alt=\"trigger-trong-sql\" class=\"wp-image-28694\" width=\"438\" height=\"428\" title=\"\" srcset=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1523.png 584w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/07\/word-image-1523-300x293.png 300w\" sizes=\"(max-width: 438px) 100vw, 438px\" \/><\/figure><\/div>\n\n\n\n<h3 id=\"T\u1ea1o_l\u1ec7nh_ki\u1ec3m_tra_ho\u1ea1t_\u0111\u1ed9ng_c\u1ee7a_Trigger\"><a id=\"post-28690-_jztw2eo7v2o\"><\/a><strong>T\u1ea1o l\u1ec7nh ki\u1ec3m tra ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Trigger<\/strong><\/h3>\n\n\n\n<p>Tr\u01b0\u1edbc ti\u00ean, b\u1ea1n c\u1ea7n ch\u00e8n c\u00e2u l\u1ec7nh sau v\u00e0o b\u1ea3ng ghi production.products:<\/p>\n\n\n\n<p>INSERT INTO production.products<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>(<\/strong><\/p><p><strong> product_name, <\/strong><\/p><p><strong> brand_id, <\/strong><\/p><p><strong> category_id, <\/strong><\/p><p><strong> model_year, <\/strong><\/p><p><strong> list_price<\/strong><\/p><p><strong>)<\/strong><\/p><p><strong>VALUES <\/strong><\/p><p><strong>(<\/strong><\/p><p><strong> &#8216;Test product&#8217;,<\/strong><\/p><p><strong> 1,<\/strong><\/p><p><strong> 1,<\/strong><\/p><p><strong> 2018,<\/strong><\/p><p><strong> 599<\/strong><\/p><p><strong>);<\/strong><\/p><\/blockquote>\n\n\n\n<p>\u0110\u1ec3 xem n\u1ed9i dung c\u1ee7a b\u1ea3ng ghi production.product_audits. B\u1ea1n s\u1eed d\u1ee5ng l\u1ec7nh nh\u01b0 sau:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>SELECT <\/strong><\/p><p><strong> * <\/strong><\/p><p><strong>FROM <\/strong><\/p><p><strong> production.product_audits;<\/strong><\/p><\/blockquote>\n\n\n\n<h3 id=\"C\u00e2u_l\u1ec7nh_x\u00f3a\"><a id=\"post-28690-_5l4dvwqk6k2g\"><\/a><strong>C\u00e2u l\u1ec7nh x\u00f3a<\/strong><\/h3>\n\n\n\n<p>\u0110\u1ec3 x\u00f3a m\u1ed9t h\u00e0ng trong b\u1ea3ng production.products, b\u1ea1n s\u1eed d\u1ee5ng l\u1ec7nh:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>DELETE FROM <\/strong><\/p><p><strong> production.products<\/strong><\/p><p><strong>WHERE <\/strong><\/p><p><strong> product_id = 322;<\/strong><\/p><\/blockquote>\n\n\n\n<p>\u0110\u1ec3 hi\u1ec7n h\u00e0ng b\u1ecb x\u00f3a trong b\u1ea3ng production.product_audits, b\u1ea1n s\u1eed d\u1ee5ng l\u1ec7nh nh\u01b0 sau:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>SELECT <\/strong><\/p><p><strong> * <\/strong><\/p><p><strong>FROM <\/strong><\/p><p><strong> production.product_audits;<\/strong><\/p><\/blockquote>\n\n\n\n<h3 id=\"C\u00e1ch_disable_Trigger_trong_SQL_server\"><a id=\"post-28690-_7a90w5h8j6da\"><\/a><strong>C\u00e1ch disable Trigger trong SQL server<\/strong><\/h3>\n\n\n\n<p>Trong l\u00fac ch\u1ec9nh s\u1eeda d\u1eef li\u1ec7u ho\u1eb7c kh\u1eafc ph\u1ee5c c\u00e1c s\u1ef1 c\u1ed1 trong c\u01a1 s\u1edf d\u1eef li\u1ec7u, vi\u1ec7c t\u1eaft Trigger s\u1ebd r\u1ea5t c\u1ea7n \u0111\u1ea5y b\u1ea1n. V\u00ec n\u1ebfu kh\u00f4ng t\u1eaft \u0111i v\u00e0 b\u1ea1n ch\u1ec9nh lu\u00f4n, \u0111\u00f4i khi b\u1ea1n s\u1ebd b\u1ecb ng\u0103n ch\u1eb7n l\u1ea1i ho\u1eb7c nh\u1eadt k\u00fd ghi l\u1ed7i s\u1ebd b\u1ecb \u201cspam\u201d b\u1edfi ch\u00ednh b\u1ea1n.<\/p>\n\n\n\n<p>\u0110\u1ec3 t\u1eaft Trigger t\u1ea1m th\u1eddi, b\u1ea1n s\u1eed d\u1ee5ng c\u00e2u l\u1ec7nh DISABLE Trigger nh\u01b0 sau:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>DISABLE Trigger [schema_name.][Trigger_name] <\/strong><\/p><p><strong>ON [object_name | DATABASE | ALL SERVER]<\/strong><\/p><\/blockquote>\n\n\n\n<p>Ph\u00e2n t\u00edch ra:<\/p>\n\n\n\n<p>\u0110\u1ea7u ti\u00ean, b\u1ea1n s\u1ebd c\u1ea7n ph\u1ea3i ch\u1ec9 \u0111\u1ecbnh b\u1ea3ng v\u00e0 schema c\u1ea7n t\u1eaft Trigger.<\/p>\n\n\n\n<p>\u0110\u1ec3 t\u1eaft to\u00e0n b\u1ed9 Trigger, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n l\u1ec7nh v\u1edbi v\u00ed d\u1ee5 t\u1eaft to\u00e0n b\u1ed9 Trigger trong b\u1ea3ng sales.members nh\u01b0 sau:<\/p>\n\n\n\n<p>T\u1ea1o b\u1ea3n ghi Trigger s\u1ef1 ki\u1ec7n x\u00f3a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>CREATE Trigger sales.trg_members_delete<\/strong><\/p><p><strong>ON sales.members<\/strong><\/p><p><strong>AFTER DELETE<\/strong><\/p><p><strong>AS<\/strong><\/p><p><strong>BEGIN<\/strong><\/p><p><strong> PRINT &#8216;A new member has been deleted&#8217;;<\/strong><\/p><p><strong>END;<\/strong><\/p><\/blockquote>\n\n\n\n<p>L\u1ec7nh x\u00f3a to\u00e0n b\u1ed9 Trigger t\u1ea1i b\u1ea3n sales.members:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>DISABLE Trigger ALL ON sales.members;<\/strong><\/p><\/blockquote>\n\n\n\n<p>Qua b\u00e0i vi\u1ebft, b\u1ea1n \u0111\u00e3 c\u00f3 th\u1ec3 n\u1eafm s\u01a1 b\u1ed9 \u0111\u01b0\u1ee3c v\u1ec1 n\u1ed9i dung c\u1ee7a Trigger trong SQL, bi\u1ebft \u0111\u01b0\u1ee3c Trigger l\u00e0 g\u00ec. Tino Group hi v\u1ecdng b\u1ea1n \u0111\u00e3 c\u00f3 \u0111\u01b0\u1ee3c nh\u1eefng ki\u1ebfn th\u1ee9c b\u1ed5 \u00edch \u0111\u1ec3 ph\u1ee5c v\u1ee5 cho vi\u1ec7c h\u1ecdc t\u1eadp v\u1ec1 c\u01a1 s\u1edf d\u1eef li\u1ec7u c\u1ee7a m\u00ecnh. M\u1ed9t l\u1ea7n n\u1eefa, Tino Group xin ch\u00fac b\u1ea1n c\u00f3 \u0111\u01b0\u1ee3c nhi\u1ec1u b\u01b0\u1edbc v\u01b0\u1ee3t b\u1eadt tr\u00ean con \u0111\u01b0\u1eddng ph\u00e1t tri\u1ec3n s\u1ef1 nghi\u1ec7p l\u1eadp tr\u00ecnh c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<h2 id=\"Nh\u1eefng_c\u00e2u_h\u1ecfi_th\u01b0\u1eddng_g\u1eb7p_v\u1ec1_Trigger\"><a id=\"post-28690-_oo9up9o1j5pd\"><\/a><strong>Nh\u1eefng c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Trigger<\/strong><\/h2>\n\n\n\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"H\u1ecdc_th\u00eam_v\u1ec1_Trigger_\u1edf_\u0111\u00e2u?\">H\u1ecdc th\u00eam v\u1ec1 Trigger \u1edf \u0111\u00e2u?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>N\u1ebfu b\u1ea1n c\u00f3 mong mu\u1ed1n h\u1ecdc th\u00eam v\u1ec1 Trigger, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o b\u1ed9 documentation c\u1ee7a IBM v\u1ec1 Trigger ngay <a href=\"https:\/\/www.ibm.com\/docs\/en\/informix-servers\/14.10?topic=tutorial-create-use-triggers\" rel=\"nofollow noopener\" target=\"_blank\">t\u1ea1i \u0111\u00e2y<\/a>. \u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft l\u00e0 b\u1ea1n c\u1ea7n ph\u1ea3i c\u00f3 n\u1ec1n t\u1ea3ng ti\u1ebfng Anh c\u01a1 b\u1ea3n \u0111\u1ec3 \u0111\u1ecdc \u0111\u01b0\u1ee3c nh\u1eefng t\u00e0i li\u1ec7u n\u01b0\u1edbc ngo\u00e0i nh\u00e9!<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"Ph\u1ea7n_m\u1ec1m_qu\u1ea3n_l\u00fd_c\u01a1_s\u1edf_d\u1eef_li\u1ec7u_n\u00e0o_l\u00e0_t\u1ed1t_nh\u1ea5t?\">Ph\u1ea7n m\u1ec1m qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e0o l\u00e0 t\u1ed1t nh\u1ea5t?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>\u0110\u1ec3 qu\u1ea3n tr\u1ecb c\u01a1 s\u1edf d\u1eef li\u1ec7u, b\u1ea1n s\u1ebd c\u00f3 r\u1ea5t nhi\u1ec1u l\u1ef1a ch\u1ecdn ph\u1ea7n m\u1ec1m. Trong ch\u01b0\u01a1ng tr\u00ecnh \u0111\u1ea1i h\u1ecdc, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m SQL Server c\u1ee7a Microsoft, \u0111\u00e2y l\u00e0 ph\u1ea7n m\u1ec1m \u0111\u01b0\u1ee3c c\u00e1c th\u1ea7y c\u1ee7a t\u00f4i h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng nhi\u1ec1u nh\u1ea5t. Ho\u1eb7c b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o nh\u1eefng ph\u1ea7n m\u1ec1m kh\u00e1c nh\u01b0: MySQL, Sybase, Informix, Postgres, MS Access, Oracle,&#8230;<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"H\u1ecdc_SQL_mi\u1ec5n_ph\u00ed_\u1edf_\u0111\u00e2u?\">H\u1ecdc SQL mi\u1ec5n ph\u00ed \u1edf \u0111\u00e2u?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>\u0110\u1ec3 h\u1ecdc c\u00e1ch s\u1eed d\u1ee5ng ng\u00f4n ng\u1eef SQL m\u1ed9t c\u00e1ch t\u1ed1t nh\u1ea5t v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed, b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp ngay v\u00e0o trang <a href=\"https:\/\/www.w3schools.com\/sql\/\" rel=\"nofollow noopener\" target=\"_blank\">W3Schools <\/a>\u0111\u1ec3 h\u1ecdc nh\u00e9! W3Schools cung c\u1ea5p b\u1ed9 ch\u01b0\u01a1ng tr\u00ecnh b\u00e0i b\u1ea3n, c\u00f3 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u00e0 gi\u00fap b\u1ea1n th\u1ef1c h\u00e0nh l\u1eadp tr\u00ecnh ngay tr\u00ean tr\u00ecnh duy\u1ec7t.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"T\u1ea3i_SQL_Server_mi\u1ec5n_ph\u00ed_\u1edf_\u0111\u00e2u?\">T\u1ea3i SQL Server mi\u1ec5n ph\u00ed \u1edf \u0111\u00e2u?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>R\u1ea5t may m\u1eafn, Microsoft c\u00f3 tung ra b\u1ea3n SQL Server 2019 Developer full ch\u1ee9c n\u0103ng v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed \u0111\u1ec3 ph\u00e1t tri\u1ec3n v\u00e0 th\u1eed nghi\u1ec7m SQL cho c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00e1 nh\u00e2n, sinh vi\u00ean s\u1eed d\u1ee5ng.<\/p>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 t\u1ea3i phi\u00ean b\u1ea3n SQL Server 2019 Developer ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed<a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/sql-server-downloads\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> t\u1ea1i \u0111\u00e2y<\/a>.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\n<script type=\"application\/ld+json\">\n\t{\n\t\t\"@context\": \"https:\/\/schema.org\",\n\t\t\"@type\": \"FAQPage\",\n\t\t\"mainEntity\": [\n\t\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"H\u1ecdc th\u00eam v\u1ec1 Trigger \u1edf \u0111\u00e2u?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>N\u1ebfu b\u1ea1n c\u00f3 mong mu\u1ed1n h\u1ecdc th\u00eam v\u1ec1 Trigger, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o b\u1ed9 documentation c\u1ee7a IBM v\u1ec1 Trigger ngay <a>t\u1ea1i \u0111\u00e2y<\/a>. \u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft l\u00e0 b\u1ea1n c\u1ea7n ph\u1ea3i c\u00f3 n\u1ec1n t\u1ea3ng ti\u1ebfng Anh c\u01a1 b\u1ea3n \u0111\u1ec3 \u0111\u1ecdc \u0111\u01b0\u1ee3c nh\u1eefng t\u00e0i li\u1ec7u n\u01b0\u1edbc ngo\u00e0i nh\u00e9!<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"Ph\u1ea7n m\u1ec1m qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e0o l\u00e0 t\u1ed1t nh\u1ea5t?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>\u0110\u1ec3 qu\u1ea3n tr\u1ecb c\u01a1 s\u1edf d\u1eef li\u1ec7u, b\u1ea1n s\u1ebd c\u00f3 r\u1ea5t nhi\u1ec1u l\u1ef1a ch\u1ecdn ph\u1ea7n m\u1ec1m. Trong ch\u01b0\u01a1ng tr\u00ecnh \u0111\u1ea1i h\u1ecdc, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m SQL Server c\u1ee7a Microsoft, \u0111\u00e2y l\u00e0 ph\u1ea7n m\u1ec1m \u0111\u01b0\u1ee3c c\u00e1c th\u1ea7y c\u1ee7a t\u00f4i h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng nhi\u1ec1u nh\u1ea5t. Ho\u1eb7c b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o nh\u1eefng ph\u1ea7n m\u1ec1m kh\u00e1c nh\u01b0: MySQL, Sybase, Informix, Postgres, MS Access, Oracle,...<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"H\u1ecdc SQL mi\u1ec5n ph\u00ed \u1edf \u0111\u00e2u?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>\u0110\u1ec3 h\u1ecdc c\u00e1ch s\u1eed d\u1ee5ng ng\u00f4n ng\u1eef SQL m\u1ed9t c\u00e1ch t\u1ed1t nh\u1ea5t v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed, b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp ngay v\u00e0o trang <a>W3Schools <\/a>\u0111\u1ec3 h\u1ecdc nh\u00e9! W3Schools cung c\u1ea5p b\u1ed9 ch\u01b0\u01a1ng tr\u00ecnh b\u00e0i b\u1ea3n, c\u00f3 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u00e0 gi\u00fap b\u1ea1n th\u1ef1c h\u00e0nh l\u1eadp tr\u00ecnh ngay tr\u00ean tr\u00ecnh duy\u1ec7t.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"T\u1ea3i SQL Server mi\u1ec5n ph\u00ed \u1edf \u0111\u00e2u?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>R\u1ea5t may m\u1eafn, Microsoft c\u00f3 tung ra b\u1ea3n SQL Server 2019 Developer full ch\u1ee9c n\u0103ng v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed \u0111\u1ec3 ph\u00e1t tri\u1ec3n v\u00e0 th\u1eed nghi\u1ec7m SQL cho c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00e1 nh\u00e2n, sinh vi\u00ean s\u1eed d\u1ee5ng.<\/p><p>B\u1ea1n c\u00f3 th\u1ec3 t\u1ea3i phi\u00ean b\u1ea3n SQL Server 2019 Developer ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed<a> t\u1ea1i \u0111\u00e2y<\/a>.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t]\n\t}\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Khi nh\u1eadp m\u00f4n c\u01a1 s\u1edf d\u1eef li\u1ec7u, b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c g\u1eb7p kh\u00e1i ni\u1ec7m Trigger. V\u1eady Trigger l\u00e0 g\u00ec? C\u00e1c c\u00e2u l\u1ec7nh Trigger trong SQL ra sao? Tino Group s\u1ebd \u0111\u01b0a ra nh\u1eefng v\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n \u0111\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 v\u1ec1 Trigger nh\u00e9! Trigger l\u00e0 g\u00ec? Trigger l\u00e0 m\u1ed9t stored procedure kh\u00f4ng c\u00f3 tham [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":28691,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5404],"tags":[6187],"class_list":["post-28690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webmasters","tag-ho-tro-developer"],"_links":{"self":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/28690","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/comments?post=28690"}],"version-history":[{"count":0,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/28690\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media\/28691"}],"wp:attachment":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media?parent=28690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/categories?post=28690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/tags?post=28690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}