Solved

Trigger in My SQL

Posted on 2014-11-19
4
162 Views
Last Modified: 2014-12-05
I have a website where the Users enter the product information by Single entry or through the batch upload of CSV file. In both cases the records get inserted to the same table which is in My SQL database.
The information is then retrieved and shown in the website too.  There is a product id column which has 20 characters. But when we are displaying it in the website we show only the first 10 records. As the next 10 are critical and is not displayed. Though the product ID is a unique column the first 10 characters are not unique. So I will be attaching product id +0001 when the information is displayed outside. So I prefer to insert a column in the existing table. The column will get update with product id +0001 on the first entry. Whenever there is a duplicate record gets inserted in the product id by matching the first 10 characters the sequence should be predicted +0002.
So I need a trigger and sequence code in mysql for this. Please help.
0
Comment
Question by:karthik80c
  • 2
4 Comments
 
LVL 32

Expert Comment

by:ste5an
ID: 40452295
Please rephrase your question. Post a concise and complete example. Include sample data..
0
 
LVL 7

Expert Comment

by:Phil Davidson
ID: 40463819
Is the product ID numeric or alphanumeric?  You want a trigger to fire on an insert to the table or an update to the table or both events?  When you say "attaching +0001," do you mean to append to the value of product ID four characters of "0001"?  I want to make sure you aren't talking about prepending it or mathematically adding the value of 0001 to the ID.

This gives information about creating triggers:

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
0
 

Author Comment

by:karthik80c
ID: 40467277
Dear Phil
The product ID is alphanumeric.
The situation is like this

Product : Apple
Product ID : UID903456790090

Product : Orange
Product ID :UID903456790093

These two products have the first 10 character same.
I am displaying only the first 10 to the customer for some reason.
When I am displaying it if the customer calls in and says the product ID he will be able to say only the first 10
So my search string on the database will retrieve two records.
So am planning to attach a sequence to the product ID with 0001 for the first record and any duplicate product ID for the first 10 character will have it 0002. I will be creating a separate column for this sequence and while displaying it in the website I will be attaching them.
0
 
LVL 7

Accepted Solution

by:
Phil Davidson earned 500 total points
ID: 40468138
There will be a third column have the 0001 and 0002 etc. values.  I don't think you want the trigger to fire on insert but not update.

Let's assume your table is called coolTable and the column for the 0001 and 0002 values is called appendVal.

create trigger coolEE AFTER INSERT on coolTable
for each row
SET new.appendVal = 
select LPAD('(select max(appendVal) from coolTable 
where new.ProductID = ProductID) + 1)', 4, '000')

Open in new window



Notes:
LPAD is a function based on the concept of "left padding" a numeric value with 0s.  This way you get the desired leading zeroes.

There is a max function which is an aggregate function.  This can be a problem with performance if you have a high workload on your database server.  Lots of triggers can degrade performance too.  So this is ok for a smaller environment.  But this wouldn't work for a high volume OLTP database.

ANSI_NULLS need to be set to off because the trigger relies on nulls participating in the arithmetic as zeroes.  Upon not finding an appendVal associated with the productID (e.g., the first insertion of a row with such a productID), the max function will return a null.  

I believe this satisfies what you want.  How do you like this response?
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Preface This is the third article about the EE Collaborative Login Project. A Better Website Login System (http://www.experts-exchange.com/A_2902.html) introduces the Login System and shows how to implement a login page. The EE Collaborative Logi…
Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL (http://www.experts-exchange.com/articles/201/Handling-Date-and-Time-in-PHP-and-MySQL.html) several years ago, it seemed like now was a good time to updat…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now