在我的表中不知道名稱和列數時,如何在將新行插入表中時跳過列?插入到MySQL時跳過列
使用INSERT (col1, col2) VALUES (1, 2)
是不是選項,因爲我無法知道運行時的列數。這一切都是根據用戶輸入計算的。
因此,我需要在插入時跳過第一列(id
,PRIMARY KEY auto_increment)。
在我的表中不知道名稱和列數時,如何在將新行插入表中時跳過列?插入到MySQL時跳過列
使用INSERT (col1, col2) VALUES (1, 2)
是不是選項,因爲我無法知道運行時的列數。這一切都是根據用戶輸入計算的。
因此,我需要在插入時跳過第一列(id
,PRIMARY KEY auto_increment)。
您可以插入而不提供列名稱,但必須爲所有列提供一些值。
INSERT INTO comments
VALUES (null, 2, 3, 4,null,6)
CREATE TABLE IF NOT EXISTS `comments` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`imageid` int(10) unsigned NOT NULL DEFAULT '0',
`uid` bigint(20) unsigned NOT NULL DEFAULT '0',
`content` text CHARACTER SET utf8,
`adate` datetime DEFAULT NULL,
`ip` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`imageid`,`adate`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
嘗試插入0作爲第一個值。如果該列是自動遞增的,它應該可以工作。
從MySQL參考: 「沒有價值是爲AUTO_INCREMENT列指定,因此MySQL自動分配的序列號,也可以明確指定NULL或0到列生成的序列號 。」 http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html
將該值設置爲Null。這不會像跳過它一樣,因爲它會是空的,除非有觸發器...等一下..除非你在運行時動態創建表,否則你怎麼不知道列數? ? – xQbert 2012-04-15 15:53:16
爲什麼它不是一個選項?如果用戶輸入讓你決定*要插入什麼,它必須足以計算* how *插入它。換句話說,如果你知道你將1插入到col1中,將2插入到col2中,這足以動態地構造一個參數化語句,將值1和2綁定到它的參數,然後在你的mysql實例中執行它。 – dasblinkenlight 2012-04-15 15:54:39
因爲這意味着創建兩個循環來構建查詢 - 第一個在VALUES之前構建零件,第二個插入實際值 – 2012-04-15 15:59:15