--- Michael Stassen <[EMAIL PROTECTED]>
wrote:

> 
> Mulugeta Maru wrote:
> 
> > Hi Michael,
> > 
> > I made some changes to the sql statments to create
> the
> > ENROLLS table as follows:
> > 
> > CREATE TABLE ENROLLS
> > (
> >   courseID SMALLINT NOT NULL,
> >   sectionID SMALLINT NOT NULL,
> >   studentID SMALLINT NOT NULL,
> >   grade SMALLINT)TYPE=INNODB;
>                    ^^^^^^^^^^^^^
> You made one too many changes.  Your error is now
> here.  You've ended the 
> CREATE TABLE statement when you weren't really done.
> 
> >   PRIMARY KEY(courseID,sectionID,studentID),
> >   INDEX(courseID),
> 
> This is not an error, but it is redundant.  You
> don't need a separate index 
> on CourseID, because it is the left-most (first)
> column in your PRIMARY KEY. 
>   Unneeded indexes waste space and slow INSERTs. 
> See the manual for details 
>
<http://dev.mysql.com/doc/mysql/en/Multiple-column_indexes.html>
> and 
>
<http://dev.mysql.com/doc/mysql/en/MySQL_indexes.html>.
> 
> >   FOREIGN KEY(courseID) REFERENCES
> COURSES(courseID) 
> >     ON UPDATE CASCADE ON DELETE CASCADE,
> >   INDEX(sectionID),
> >   FOREIGN KEY(sectionID) REFERENCES
> SECTIONS(sectionID)
> >     ON UPDATE CASCADE ON DELETE CASCADE,
> >   INDEX(studentID),
> >   FOREIGN KEY(studentID) REFERENCES
> STUDENTS(studentID)
> >     ON UPDATE CASCADE ON DELETE CASCADE
> > )TYPE=INNODB;
> 
> Change this to
> 
> CREATE TABLE ENROLLS
> (
>    courseID SMALLINT NOT NULL,
>    sectionID SMALLINT NOT NULL,
>    studentID SMALLINT NOT NULL,
>    grade SMALLINT,
>    PRIMARY KEY(courseID,sectionID,studentID),
>    FOREIGN KEY(courseID) REFERENCES
> COURSES(courseID)
>      ON UPDATE CASCADE ON DELETE CASCADE,
>    INDEX(sectionID),
>    FOREIGN KEY(sectionID) REFERENCES
> SECTIONS(sectionID)
>      ON UPDATE CASCADE ON DELETE CASCADE,
>    INDEX(studentID),
>    FOREIGN KEY(studentID) REFERENCES
> STUDENTS(studentID)
>      ON UPDATE CASCADE ON DELETE CASCADE
> )TYPE=INNODB;
> 
> > The error message is as follows:
> > ERROR 1064 at line 38: You have an error in your
> SQL
> > syntax; check the manual that corresponds to your
> > MySQL server version for the right syntax to use
> near
> > 'PRIMARY KEY (countID, sectionID, studentID),
> > INDEX(courseID),
> > FOREIGN KEY(courseID' at line 1
> > 
> > I do not know what wrong with my syntax. Please
> help.
> > I am using MySQL version 4.1.3B.
> 
> Yes, your formatting choices make it hard to see
> errors.  You should 
> consider using indentation and line breaks to
> logically organize your 
> queries for readability, and you might consider
> using something other than 
> all caps for table names so as to distinguish them
> from SQL.  There are two 
> benefits to this:  First, there are several experts
> on the list who won't 
> read and respond to a message where the query is
> difficult to read.  In 
> other words, you improve your chances of getting
> useful help if you make it 
> easy for us to read your queries.  Second, you may
> find that formatting 
> helps you catch problems yourself, without having to
> resort to the list. 
> Just a suggestion.
> 
> > Regards,
> > 
> > Maru
> 
> Michael
> 

I removed the index and still get the following error
message:

The error message is as follows:
ERROR 1064 at line 38: You have an error in your SQL
syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use
near 'PRIMARY KEY (countID, sectionID, studentID),
FOREIGN KEY(courseID) REFERENCES COUR' at line 1

Any fruther thought on this error.
As you can see from the sql statement the three fields
courseID,sectionID, studentID are primery keys in
tables COURSES, SECTIONS, and STUDENTS respectively.
What I am trying to do is to make the three fields
together to be primary key in the ENROLL table and to
make each of them foreign keys. At the same time I
would like also to have cascade update and delete.


Regards,

Maru





                
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to