2015-09-04 44 views
0

以下是表格結構。插入查詢和錯誤消息。如何在SQLIte中處理列默認值插入?

表結構

CREATE TABLE d0000ke_c_name (
    c_name INTEGER PRIMARY KEY NOT NULL, 
    value VARCHAR(255) , 
    sc_version INTEGER , 
    sc_state INTEGER 
); 

插入查詢

$sql = "INSERT INTO d0000kv_c_name SELECT 3 AS 'c_name','manash' AS 'value' UNION SELECT 2,'ram' UNION SELECT 1,'rahim'"; 
$statement = $this->odb->prepare($sql); 
if (!$statement) { 
    echo "\nPDO::errorInfo():\n"; 
    print_r($this->odb->errorInfo()); 
} 

$statement->execute(); 

錯誤消息

PDO :: errorInfo中():陣列([0] => HY000 [1] => 1 [2] =>表d0000kv_c_name有4列但提供了2個值)

回答

2

您的選擇SELECT 3 AS 'c_name','manash' AS 'value' UNION SELECT 2,'ram' UNION SELECT 1,'rahim'返回2列,但您的表d0000ke_c_name有4列。

你必須申報將被填充字段中輸入您INSERT INTO

$sql = "INSERT INTO d0000kv_c_name (c_name, value) SELECT 3 AS 'c_name','manash' AS 'value' UNION SELECT 2,'ram' UNION SELECT 1,'rahim'"; 

(在這種情況下,場sc_versionsc_state將得到默認值。)

還是應該添加缺少的字段(如 「0,0」 的領域sc_versionsc_state)到您的SELECT

$sql = "INSERT INTO d0000kv_c_name SELECT 3 AS 'c_name','manash' AS 'value', 0, 0 UNION SELECT 2, 'ram', 0, 0 UNION SELECT 1,'rahim', 0, 0"; 
+0

它工作完美...你保存我的頭 – Satyajeet

+0

我想去的第一個 – Satyajeet