Join Bill Weinman for an in-depth discussion in this video Automating timestamps with a trigger, part of SQL Essential Training (2014).
Triggers may also be used to create timestamps in the table you're triggering from, as well as in other tables. In this example, I'll show you how to use a trigger to create timestamps and to update a transaction log. We'll be using the test.db database. And I'll be copying and pasting again from our exercise files for chapter nine, this is under 03 timestamps around line 50, we're going to start by dropping both of these tables and recreating them and creating a third table for our log.
And you'll notice that the customer and sale table now have this stamped column which is text. Dates and times are stored as text in SQL lite, and then we'll insert some rows into the customer table with Bob, Sally, and Fred, we're familiar with them already. And then we're going to create this trigger. Which I'll explain in a moment. So I'm going to copy and paste into the SQL box here in SID and press Go. And you notice our customer table, it doesn't have any last order id, because we populated it with just the names.
And also, the stamp is null. And this trigger is going to take care of the timestamps. We have an existing trigger to update the last order id from a previous lesson. So we have create trigger, and this one is called stamp sale, so it's going to time stamp the sale in both the customer table and the sale table. And it's going to insert a row into the log table. And this will happen after an insert on widgetSale. And between the begin and end you see we have three statements now.
An update for the widgetSale to set the timestamp to now. Updte to the widgetCustomer to set the last_order_id, and the timestamp. And an insert into the widgetLog. So, we'll go ahead and insert some rows into our sale table, and we're going to select from all three of these, so you can see the result. So, I'll copy and paste that, and Go. Now we have three sales in our sale table. You notice they have timestamps on them.
There's also timestamps in the customer table, for when the last sale happened. And there's three rows in the log table. All from just these three inserts into the sale table. So, now you have an idea of just how powerful triggers can be. You can use triggers to create timestamps in the table you're inserting or updating and in other tables, as well. Keep in mind that triggers are implemented differently from system to system. So, check your system documentation for specific features and usage.
- Understanding SQL terminology and syntax
- Creating new tables and records
- Inserting and updating data
- Writing basic SQL queries
- Sorting and filtering
- Accessing related tables with JOIN
- Working with strings
- Finding the numeric type of a value
- Using aggregate functions and transactions
- Updating a table with triggers
- Creating views
Skill Level Beginner
Q: For Mac OS X: When I try to start the Apache Web Server from the XAMPP control panel, it doesn't start, and when I open "localhost" in my web browser, I see a white screen that says "It Works!" instead of the XAMPP page.
sudo apachectl stop
Q: I'm on a Mac, and I get an error in SID that says "attempt to write a read only database." How can I fix this?
A: This usually means that the database folder does not have sufficient permissions for writing by the web user. This can happen if you create the SQL folder new, rather than copying it from the Exercise Files. Here's how to fix this:
- Open a Finder window and Navigate to /Applications/XAMPP/htdocs/SQL
- Control-click on the SQL folder and select "Get Info" from the context menu.
- Under "Sharing and Permissions" (you may need to open the disclosure triangle), in the "everyone" row, select "Read & Write."Then you can close the Info window.
- Now repeat the process for the three *.db files inside the folder.