非常簡單:將創建一個已存在的SQL表覆蓋它嗎?
如果我在數據庫中創建一個表,它是否會刪除或覆蓋另一個同名的表?
我在遊戲中有一個腳本需要一張信息表。 我可以簡單地運行這個每次腳本啓動?:
CREATE TABLE player_data (UniqueID string, Money int)
這樣當別人運行在他們的遊戲腳本,該表將被創建,但如果他們再次運行它,它不會被覆蓋?
非常簡單:將創建一個已存在的SQL表覆蓋它嗎?
如果我在數據庫中創建一個表,它是否會刪除或覆蓋另一個同名的表?
我在遊戲中有一個腳本需要一張信息表。 我可以簡單地運行這個每次腳本啓動?:
CREATE TABLE player_data (UniqueID string, Money int)
這樣當別人運行在他們的遊戲腳本,該表將被創建,但如果他們再次運行它,它不會被覆蓋?
但是如果他們再次運行它,它不會被覆蓋?
不需要。一般來說,在CREATE成功之前,您必須先刪除表。
當涉及到實際的實現時,例如表是臨時的還是永久的,這裏有很多例外,多個用戶可以擁有相同的表名,只要他們使用不同的用戶名即可。查看您的特定服務器版本是否有這種例外。
這取決於您正在使用哪個數據庫引擎。在MySQL中有CREATE TABLE IF NOT EXISTS
,使它只會嘗試創建表,如果它不存在。
所以你的陳述看起來像CREATE TABLE IF NOT EXISTS player_data (UniqueID string, Money int)
。如果沒有名爲player_data的表,則會創建一個新表。但是,如果已經有一個名爲player_data的表,那麼數據庫不會發生任何修改。
對於大多數流行的數據庫引擎,通常有替代方法可以做類似的事情。
但是'IF NOT EXISTS'是你必須明確提供的東西。我認爲OP關心的是意外覆蓋現有的表格。 – chepner
表格首次不存在,並且player_data表格將以'CREATE TABLE IF NOT EXISTS player_data(UniqueID string,Money int)'創建'但是下次這個語句將運行時,將不會有表格修改或創建,該表已經存在。我會更新我的答案,使其更清楚。 –
在我用過的數據庫引擎上,試圖(重新)創建一個已經存在的表會導致錯誤。 –
我會非常警惕一個數據庫,*不會將此視爲錯誤。 – chepner
難道你沒有通過簡單地運行你的陳述兩次找出答案嗎?(比在這裏寫你的問題的時間少得多)? –