2012-06-25 67 views
0

我已經在mysql中使用StoredProcedure創建了一個表,並且我也應用了主鍵約束,當我試圖應用外鍵約束時..iam得到錯誤「無法創建表dbname.tablename」。 。這裏是我的簡單存儲過程mysql存儲過程不接受外鍵約束

delimiter | 
CREATE PROCEDURE SP_CREATE_TABLE_SAMP() 
BEGIN 
CREATE TABLE anan_user (
    user_id bigint(15) NOT NULL AUTO_INCREMENT, 
    name varchar(70) DEFAULT NULL, 
    last_name varchar(70) DEFAULT NULL, 
    gender varchar(10) DEFAULT NULL, 
    username varchar(40) DEFAULT NULL, 
    password varchar(40) DEFAULT NULL, 
    dateofbirth date DEFAULT NULL, 
    email varchar(100) DEFAULT NULL, 
    phone varchar(25) DEFAULT NULL, 
    mobile varchar(25) DEFAULT NULL, 
    address varchar(250) DEFAULT NULL, 
    pincode varchar(15) DEFAULT NULL, 
    state_id bigint(15) DEFAULT NULL, 
    district_id bigint(15) DEFAULT NULL, 
    constituency_id bigint(15) DEFAULT NULL, 
    profile_Img varchar(100) DEFAULT NULL, 
    is_pwd_changed varchar(10) DEFAULT 'false', 
    registered_time timestamp NULL DEFAULT NULL, 
    updated_date timestamp NULL DEFAULT NULL, 
    PRIMARY KEY (user_id) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
END; 

如何在存儲過程中提供外鍵約束?

回答

2

檢查您的語法與the MySQL reference on foreign key constraints。這對您發佈您嘗試的內容以及如何設置外鍵約束也很有幫助。

一個例子約束定義是:

CREATE TABLE parent (id INT NOT NULL, 
       PRIMARY KEY (id) 
) ENGINE=INNODB; 
CREATE TABLE child (id INT, parent_id INT, 
       INDEX par_ind (parent_id), 
       FOREIGN KEY (parent_id) REFERENCES parent(id) 
        ON DELETE CASCADE 
) ENGINE=INNODB; 

相關的語法是FOREIGN KEY (parent_id) REFERENCES parent(id)

+0

但這是用於正常表..當我去手續iam得到錯誤 – sasi

+0

什麼是您試圖實現的外鍵約束? –

+0

k得到它安德魯C,我的程序本身有一些語法錯誤任何方式..謝謝你 – sasi