programing

워드프레스 데이터베이스에서 외국키를 만드는 방법은?

cafebook 2023. 10. 15. 17:53
반응형

워드프레스 데이터베이스에서 외국키를 만드는 방법은?

워드프레스에서 데이터베이스 테이블을 3개 만들려고 합니다.

그중 한명은 다른 한명과 관계를 맺고싶습니다.워드프레스로 참고키를 만드는 방법을 찾을 수가 없습니다.

이 코드를 테이블 위에 만들어서..그러나 참조와 키를 만드는 방법은 1개의 테이블이 두 테이블 사이의 관계를 포함할 것입니다.

    global $wpdb;

    $table_name = $wpdb -> prefix . "Person";

    if($wpdb ->get_var("SHOW TABELS LIKE '$table_name'") != $table_name)
    {
        $sql = "CREATE TABLE " . $table_name . " (
        `id` INTEGER(9) NOT NULL AUTO_INCREMENT,
        `titel` varchar(255) NOT NULL,
        `content` text NOT NULL,
         UNIQUE KEY id (id)
         );";

        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta($sql);

        add_option('createTBL_version', '1.0'); 
    }

외부 키는 다음과 같이 작동합니다.

FOREIGN KEY(table_field_name) REFERENCES [table_to_be_referred](referred_field)

필드는 참조 테이블에 있어야 하며 참조자의 정의와 정확히 일치해야 합니다.일반적으로 고유성 때문에 기본 키만 참조됩니다.

예는 다음과 같습니다.

CREATE TABLE A (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(10)
);

CREATE TABLE B (
    idB INT NOT NULL PRIMARY KEY,
    idA INT NOT NULL,
    name VARCHAR(10),
    FOREIGN KEY (idA) REFERENCES A(id)
);

여기 외국키를 만드는 데 도움이 되는 코드가 있습니다. 같은 문제가 있었는데 해결이 되었습니다.

또한 대신에dbDelta($sql);사용가능$wpdb->query(sql);또한 아래 예제 location_id에서 외부 키의 유형과 참조 키의 유형이 동일한 데이터 유형인지 확인해야 합니다. 따라서 TEST2_TABLE의 기본 키인 id도 int(11) 유형이어야 합니다.

$sql = "CREATE TABLE ".TEST_TABLE." (
    id INT( 11 ) NOT NULL AUTO_INCREMENT,
    title VARCHAR( 100 ) NOT NULL,
    description TEXT DEFAULT NULL,
    location_id INT( 11 ) NOT NULL,
    PRIMARY KEY  (id),
    FOREIGN KEY  (location_id) REFERENCES ".TEST2_TABLE." (id)
);";

언급URL : https://stackoverflow.com/questions/28584680/how-to-create-foreign-key-in-wordpress-database

반응형