<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>trigger Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/tag/trigger/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/tag/trigger/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Tue, 19 Dec 2023 06:20:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>trigger Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/tag/trigger/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</title>
		<link>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/</link>
					<comments>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Tue, 19 Dec 2023 06:20:41 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[trigger]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2582</guid>

					<description><![CDATA[<p>Thông tin chi tiết về bài toán: Ở đây tôi có một bài toán từ khách hàng như&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/">Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="thong-tin-chi-tiet-ve-bai-toan" class="wp-block-heading"><strong>Thông tin chi tiết về bài toán:</strong></h2>



<p>Ở đây tôi có một bài toán từ khách hàng như sau: Hãy tạo cho tao một mã đơn hàng (<strong>trans_confirm_no</strong>) để tao có thể phân biệt được các đơn hàng với nhau với định dạng như này &#8220;<strong>TMSxxxxx</strong>&#8221; và nó sẽ phải bắt đầu từ &#8220;<strong><strong>TMS</strong>00001</strong>&#8220;. </p>



<p><br>Ngay khi nhận được yêu cầu thì tôi đã bắt tay ngay vào việc code và ngôn ngữ tôi sử dụng cho dự án này là Java spring boot và MSQL.</p>



<h3 id="cach-su-dung-code-de-generate-ma-trans_confirm_no" class="wp-block-heading">Cách sử dụng code để generate mã trans_confirm_no</h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854167938232422px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code="// hàm tạo ra mã trans_confirm_no mới tăng dần
private synchronized String getTransConfirmNoDiorTest(){
        String maxTransConfirmNo = transactionDiorMapper.getTransConfirmNo();
        log.info(&quot;maxTransConfirmNo: {}&quot;, maxTransConfirmNo);
        StringBuilder result = new StringBuilder();
        if (StringUtils.isBlank(maxTransConfirmNo)){
            logger.warn(&quot;Order transConfirmNo failed, transConfirmNo={}&quot;, maxTransConfirmNo);
            result.append(&quot;00001&quot;);
        } else {
            int maxTransConfirmNoIntValue = Integer.parseInt(maxTransConfirmNo.substring(3)) + 1;
            if (maxTransConfirmNoIntValue &gt; 0 &amp;&amp; maxTransConfirmNoIntValue &lt; 100000 ) {
                int len = 5 - ((Integer)maxTransConfirmNoIntValue).toString().length();
                if ( len &gt; 0 ) {
                    for (int i = 0; i &lt; len ; i++) {
                        result.append(&quot;0&quot;);
                    }
                    result.append(maxTransConfirmNoIntValue);
                } else {
                    result.append(maxTransConfirmNoIntValue);
                }
            } else {
                result.append(&quot;00001&quot;);
            }
        }
        log.info(&quot;result: {}&quot;, result);
        return &quot;TMS&quot; + result;
    }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B">// hàm tạo ra mã trans_confirm_no mới tăng dần</span></span>
<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">synchronized</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">String</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">getTransConfirmNoDiorTest</span><span style="color: #F6F6F4">(){</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">String</span><span style="color: #F6F6F4"> maxTransConfirmNo </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> transactionDiorMapper.</span><span style="color: #62E884">getTransConfirmNo</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">        log.</span><span style="color: #62E884">info</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">maxTransConfirmNo: {}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, maxTransConfirmNo);</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">StringBuilder</span><span style="color: #F6F6F4"> result </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4; font-weight: bold">new</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">StringBuilder</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (StringUtils.</span><span style="color: #62E884">isBlank</span><span style="color: #F6F6F4">(maxTransConfirmNo)){</span></span>
<span class="line"><span style="color: #F6F6F4">            logger.</span><span style="color: #62E884">warn</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Order transConfirmNo failed, transConfirmNo={}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, maxTransConfirmNo);</span></span>
<span class="line"><span style="color: #F6F6F4">            result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">00001</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">        } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> maxTransConfirmNoIntValue </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> Integer.</span><span style="color: #62E884">parseInt</span><span style="color: #F6F6F4">(maxTransConfirmNo.</span><span style="color: #62E884">substring</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">3</span><span style="color: #F6F6F4">)) </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (maxTransConfirmNoIntValue </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;&amp;</span><span style="color: #F6F6F4"> maxTransConfirmNoIntValue </span><span style="color: #F286C4">&lt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">100000</span><span style="color: #F6F6F4"> ) {</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> len </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">5</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> ((Integer)maxTransConfirmNoIntValue).</span><span style="color: #62E884">toString</span><span style="color: #F6F6F4">().</span><span style="color: #62E884">length</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> ( len </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4"> ) {</span></span>
<span class="line"><span style="color: #F6F6F4">                    </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> (</span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> i </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">; i </span><span style="color: #F286C4">&lt;</span><span style="color: #F6F6F4"> len ; i</span><span style="color: #F286C4">++</span><span style="color: #F6F6F4">) {</span></span>
<span class="line"><span style="color: #F6F6F4">                        result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">0</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">                    }</span></span>
<span class="line"><span style="color: #F6F6F4">                    result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(maxTransConfirmNoIntValue);</span></span>
<span class="line"><span style="color: #F6F6F4">                } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">                    result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(maxTransConfirmNoIntValue);</span></span>
<span class="line"><span style="color: #F6F6F4">                }</span></span>
<span class="line"><span style="color: #F6F6F4">            } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">                result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">00001</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">            }</span></span>
<span class="line"><span style="color: #F6F6F4">        }</span></span>
<span class="line"><span style="color: #F6F6F4">        log.</span><span style="color: #62E884">info</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">result: {}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, result);</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #F286C4">return</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">TMS</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> result;</span></span>
<span class="line"><span style="color: #F6F6F4">    }</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854171752929688px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code=" // hàm lấy ra mã trans_confirm_no lớn nhất đang có
 SELECT
            ttd.trans_confirm_no
        FROM
            t_transaction_dior ttd
        WHERE
            ttd.delete_flag = 0
            AND ttd.trans_confirm_no LIKE 'JPD%'
            AND ttd.trans_status IS NOT NULL
        ORDER BY ttd.trans_confirm_no DESC
        LIMIT 1;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4"> </span><span style="color: #7B7F8B">// hàm lấy ra mã trans_confirm_no lớn nhất đang có</span></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">SELECT</span></span>
<span class="line"><span style="color: #F6F6F4">            ttd.trans_confirm_no</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">FROM</span></span>
<span class="line"><span style="color: #F6F6F4">            t_transaction_dior ttd</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">WHERE</span></span>
<span class="line"><span style="color: #F6F6F4">            ttd.delete_flag </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">AND</span><span style="color: #F6F6F4"> ttd.trans_confirm_no LIKE </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">JPD%</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">AND</span><span style="color: #F6F6F4"> ttd.trans_status </span><span style="color: #97E1F1; font-style: italic">IS</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NOT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NULL</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">ORDER</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">BY</span><span style="color: #F6F6F4"> ttd.trans_confirm_no </span><span style="color: #97E1F1; font-style: italic">DESC</span></span>
<span class="line"><span style="color: #F6F6F4">        LIMIT </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Vấn đề gặp phải ở đây là khi chúng tôi có nhiều đầu api call đến hàm này cùng thời điểm thì việc tạo ra một mã <strong><strong>TMS</strong>xxxxx</strong> tăng dần gặp vấn đề và nó Generate không đúng với mong muốn.</p>



<p>Khi hệ thống có lượng truy cập lớn, số lượng user mua hàng dồn dập, hàm bên trên sẽ xảy ra trường hợp sinh ra các mã <strong>trans_confirm_no</strong> trùng nhau.</p>



<h3 id="su-dung-trigger-generate-ma-trans_confirm_no" class="wp-block-heading">Sử dụng trigger generate mã trans_confirm_no</h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854156494140625px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code="// Đầu tiên chúng ta tạo ra 1 bảng để sử cơ chế AUTO_INCREMENT trong mysql để  lấy được phần xxxxx nằm trong fomat &quot;TMSxxxxx&quot;
CREATE TABLE transaction_seq
(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);

// Mình tạo ra 1 trigger sử dụng concat để nối prefix TMS + xxxxx đã được gen ở bảng transaction_seq phía trên.
DELIMITER $$
CREATE TRIGGER tg_t_transaction_dior_insert
    BEFORE INSERT ON t_transaction_dior
    FOR EACH ROW
BEGIN
    INSERT INTO transaction_seq VALUES (NULL);
    SET NEW.trans_confirm_no = CONCAT('TMS', LPAD(LAST_INSERT_ID(), 5, '0'));
END$$
    DELIMITER ;

// Đặt giá trị bắt đầu AUTO_INCREMENT trong table transaction_seq
ALTER TABLE transaction_seq AUTO_INCREMENT=00001;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B">// Đầu tiên chúng ta tạo ra 1 bảng để sử cơ chế AUTO_INCREMENT trong mysql để  lấy được phần xxxxx nằm trong fomat &quot;TMSxxxxx&quot;</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">CREATE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TABLE</span><span style="color: #F6F6F4"> transaction_seq</span></span>
<span class="line"><span style="color: #F6F6F4">(</span></span>
<span class="line"><span style="color: #F6F6F4">    id </span><span style="color: #97E1F1; font-style: italic">INT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NOT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NULL</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">AUTO_INCREMENT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">PRIMARY</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">KEY</span></span>
<span class="line"><span style="color: #F6F6F4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">// Mình tạo ra 1 trigger sử dụng concat để nối prefix TMS + xxxxx đã được gen ở bảng transaction_seq phía trên.</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">DELIMITER</span><span style="color: #F6F6F4"> $$</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">CREATE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TRIGGER</span><span style="color: #F6F6F4"> tg_t_transaction_dior_insert</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">BEFORE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">INSERT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">ON</span><span style="color: #F6F6F4"> t_transaction_dior</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">FOR</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">EACH</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">ROW</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">BEGIN</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">INSERT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">INTO</span><span style="color: #F6F6F4"> transaction_seq </span><span style="color: #62E884">VALUES</span><span style="color: #F6F6F4"> (NULL);</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">SET</span><span style="color: #F6F6F4"> NEW.trans_confirm_no </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">CONCAT</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">TMS</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #62E884">LPAD</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">LAST_INSERT_ID</span><span style="color: #F6F6F4">(), </span><span style="color: #BF9EEE">5</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">));</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">END</span><span style="color: #F6F6F4">$$</span></span>
<span class="line"><span style="color: #F6F6F4">    DELIMITER ;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">// Đặt giá trị bắt đầu AUTO_INCREMENT trong table transaction_seq</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">ALTER</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TABLE</span><span style="color: #F6F6F4"> transaction_seq AUTO_INCREMENT</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">00001</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Khi sử dụng trigger đã giải quyết được vấn đề của tôi trong bài toán này.</p>
<p>The post <a href="https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/">Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
