Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

foreign key possible in myisam?

Posted on 2004-08-10
9
Medium Priority
?
1,741 Views
Last Modified: 2008-03-10
i know that i can use foreign key constraints in InnoDB, but my isp doesn't offer this type of db.  Is it possible to use foreign key in MYISAM?  If so how would i go about implementing this?
0
Comment
Question by:lienny
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
9 Comments
 
LVL 17

Expert Comment

by:akshah123
ID: 11768211
I don;t think so

on following page

http://dev.mysql.com/doc/mysql/en/ANSI_diff_Foreign_Keys.html

it clearlly says

" At a later stage, foreign key constraints will be implemented for MyISAM tables as well. "

THus no foreign keys in MYISAM right now.

: (
0
 

Author Comment

by:lienny
ID: 11768300
so i would have to enforce my foreign key in my sql statements?
0
 
LVL 33

Expert Comment

by:snoyes_jw
ID: 11773868
yes
0
Fill in the form and get your FREE NFR key NOW!

Veeam® is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

 

Author Comment

by:lienny
ID: 11775016
can you give me an example on how i would do that, then I'll reward the points.
Thanks!
0
 
LVL 33

Accepted Solution

by:
snoyes_jw earned 500 total points
ID: 11775917
Well, foreign keys just ensure that a key exists before inserting/updating, and deletes children rows if the parent row is deleted.

So say you have tables tableA and tableB, and tableB has a foregin key on tableA.
tableA:
id

tableB:
id
AId

Before you insert or update into tableB, check tableA:
SELECT * FROM tableA WHERE id = potential_AId
If no rows are returned, don't do the insert/update.  Alternatively, you can do it like this:
INSERT INTO tableB (AId, other_field) SELECT id, other_literal_string FROM tableA WHERE id = potential_AId;

When deleting from tableA, do this:
DELETE FROM tableB WHERE AId = id_to_delete;
DELETE FROM tableA WHERE id = id_to_delete;
0
 

Author Comment

by:lienny
ID: 11776183
lets say i have tables:

employees:
id
empNo
firstName
lastName

training:
id
eid
trainDate
training

when i do an insert how would i grab that id value from the employees table and have it automatically insert into the eid field of the training table?
0
 

Author Comment

by:lienny
ID: 11776246
sorry...let me clarify...it'll be 2 seperate forms...they can enter the employees in one form and then have a link to enter the training for that employee
0
 
LVL 33

Expert Comment

by:snoyes_jw
ID: 11776757
I assume the id is automatically generated using auto_increment?

You have a couple of choices.
1) If using PHP, use the mysql_insert_id() method
http://us3.php.net/manual/en/function.mysql-insert-id.php

2) Use MySQL's LAST_INSERT_ID() method
http://dev.mysql.com/doc/mysql/en/Information_functions.html

3) Structure your second query to select from the employee table:
INSERT INTO training (eid, trainDate, training) SELECT id, '2004-08-11', 'GMP Training' FROM employees WHERE empNo = 42;
0
 

Author Comment

by:lienny
ID: 11776849
thanks.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This post contains step-by-step instructions for setting up alerting in Percona Monitoring and Management (PMM) using Grafana.
In this blog, we’ll look at how improvements to Percona XtraDB Cluster improved IST performance.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

618 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