2011-05-08 149 views
3

我正在做一些功課。我的數據庫的用戶使用一些其他屬性,而不僅僅是當我實現登錄和註冊機制時爲我自動創建的那些屬性。但是,當我嘗試保存修改顯示我一個錯誤。有人能幫我一把嗎? 這是錯誤:爲什麼我不能添加新列到我的用戶表?

enter image description here 錯誤說:

'aspnet_Users' table - Unable to modify table. ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'kjoptekvoten' cannot be added to non-empty table 'aspnet_Users' because it does not satisfy these conditions.

,當我實現了基於認證和註冊表格數據庫自動創建。現在的問題是用戶需要更多的屬性。我怎麼能給它更多的屬性?最簡單的方法是什麼?不介意它是不是理論上正確的(這只是作業)。

我會很感激你的幫助。

+0

它特別重要,它是理論上正確的,因爲它的功課:-) – 2011-05-09 00:52:49

回答

5

除了數據庫方面的技術問題之外,這裏還有一個更深層次的問題。

您不應該改變aspnet_Users表,因爲您繞過了asp.net中成員資格'系統'的工作方式。相反,看看到檔案機制:http://www.4guysfromrolla.com/articles/101106-1.aspx

+0

+1使用配置文件或其他存儲取決於你想要做什麼。儘管如此,不要與內部組件混合。 – 2011-05-08 22:55:36

3

您需要使新屬性可以爲空或提供默認值。但是你也需要考慮如何從db中獲取值。 sql成員資格提供程序利用自動生成的存儲過程將數據放入返回的成員資格用戶實例中,因此僅添加表中的屬性不足以將屬性值獲取到應用程序中。我會使用用戶屬性表。

+0

這不會滲透工作(我只是這樣做)。查看更新後的圖片。 您可以給我一些指導或技巧,如何能夠創建用戶屬性表,並能夠添加數據?請,我將不勝感激 – sfrj 2011-05-08 21:36:06

+2

您是否可以爲空,或者您是否提供默認值? – recursive 2011-05-08 21:47:16

+0

我剛纔說(複選框「允許空」沒有選中),這意味着它可以爲空。但是當我按下Ctrl + S來保存更改時,錯誤會彈出。我如何添加一個默認值到我無法創建的列? – sfrj 2011-05-09 07:33:19

2

錯誤消息說明了這一切:
您正在添加一個不能爲空的新列(複選框「允許空」未選中),但由於您未提供默認值,它將爲空。
因此,SQL Server無法創建新列。

你可以做兩件事情:

a)創建並允許空值的新列。
然後把默認值在所有現有行:
update aspnet_Users set kjoptekvoten = 0)
......然後取消「允許空值」

二)直接使用默認值創建新列。
我不知道你是否能在Management Studio中做到這一點,但它在T-SQL很簡單:

alter table aspnet_Users 
add kjoptekvoten int not null 
constraint Name_For_Constraint default(0) with values 

這將增加新的不空的列,並創建一個默認值的約束和填寫所有現有行中的默認值(SQL Server不會在沒有「with values」子句的情況下執行此操作)。

2

通常我剛纔設置的列允許空值

然後做一個SQL更新表設定值= whateva

然後更新表定義不允許空值。

相關問題