Deleting really requires more thought in real-world applications than we will demonstrate here. Instead of deleting data, consider archiving it in a different table for historical purposes. Or you might simply flag a record as inactive without actually removing it from the database. Actually deleting data is a permanent solution, so approach it with caution.
Here we use the final two scripts. As with modifying, deleting first requires that you ascertain that a given field is available. So the first script, delete_select.asp, displays a list of discontinued products from the Northwind database’s Products table. Clicking that product will execute delete.asp, which actually deletes the record from the table. But before doing so, we must turn on the Cascade Delete option in the relationship between the Products table and the Order Details table. Otherwise the script will return an error. To do so, open the Northwind database in Access and:
- Click the Relationships button to open the Relationships window.
- Right-click the join line between the Products and Order Details tables.
- Choose Edit Relationships from the resulting submenu.
- In the Edit Relationships dialog box, check the "Cascade delete related records" option.
- Click OK, close the relationships window, and save the database.
This is an accommodation to simplify the example. When making deletions in a real application, it is better not to permanently turn on the cascade Delete option. Such a drastic step might destroy valid corresponding data in the Order Details table, and just because you are discontinuing the item doesn’t mean that you never actually supplied it to a customer. So let this simplified example demonstrate how far seemingly simple decisions can reach.
That said, you are ready to delete some data. Point your browser to the following URL: http://localhost/sample/delete_select.asp
You should see a list of discontinued products, which delete_select.asp generates by selecting from Products where Discontinued=True. Notice that this time, the page isn’t an HTML form instead, each product is simply a link with delete.asp and an appended ProductID value for its href.
Click any item to delete it from the Products table (and any corresponding records from the Order Details table). This executes delete.asp, which grabs the < ProductID value from the URL as Request.QueryString("ProductID")
Using this value, it constructs a Delete SQL statement, executes it, and confirms with the message:The record has been deleted.
Opening the Products table in Access should reveal that the record is indeed gone.
Click Next for insert-form.html