2011-05-08 4 views
3

나는 숙제를하고있다. 내 데이터베이스의 사용자는 로그인 및 등록 메커니즘을 구현할 때 ASP 2.0이 자동으로 생성 한 속성뿐만 아니라 다른 속성도 사용합니다. 하지만 수정을 저장하려고하면 오류가 표시됩니다. 누군가 나에게 손을 줄 수 있습니까?내 사용자 테이블에 새 열을 추가 할 수없는 이유는 무엇입니까?

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

숙제이기 때문에 이론적으로는 문제가되지 않습니다 .- –

답변

5

데이터베이스 측면의 기술적 측면을 제외하고 여기에는 더 심각한 문제가 있습니다.

asp.net의 멤버십 시스템이 작동하는 방식을 우회하기 때문에 aspnet_Users 테이블을 변경하면 안됩니다. 대신, 프로파일 메커니즘으로보고있다 : 널 (null)이

다음 SQL의 UPDATE 표 설정 값을 허용하는 = 그렇 열 http://www.4guysfromrolla.com/articles/101106-1.aspx

+0

+1 당신이하고 싶은 것에 따라 프로파일이나 다른 가게를 사용하십시오. 내부와 비록 엉망이 아니야. –

3

새 속성을 nullable로 만들거나 기본값을 제공해야합니다. 그러나 db로부터 값을 얻는 방법도 고려해야합니다. SQL 멤버 자격 공급자는 자동 생성 저장 프로 시저를 사용하여 반환 된 멤버 자격 사용자 인스턴스에 데이터를 저장하므로 테이블에 특성을 추가하는 것만으로는 특성 값을 응용 프로그램에 전달하기에 충분하지 않습니다. 대신 사용자 속성 테이블을 사용합니다.

+0

그게 작동하지 않습니다. (방금했습니다.)업데이트 된 이미지를 참조하십시오. 사용자 속성 테이블을 만들고 데이터를 추가 할 수있는 방법에 대한 지침이나 팁을 알려주십시오. 제발, 많이 감사하겠습니다. – sfrj

+2

nullable로 만들었습니까? 아니면 기본값을 제공 했습니까? – recursive

+0

방금 ​​말한대로 ("Allow Nulls"체크 박스가 선택되지 않음), 이는 null이 허용됨을 의미합니다. 그러나 Ctrl + S를 눌러 변경 사항을 저장하면 오류가 나타납니다. 내가 만들 수없는 열에 defauld 값을 어떻게 추가 할 수 있습니까? – sfrj

2

오류 메시지는 모두 그것을 말한다 :
당신은 (확인란을 선택하지 "널 (null)을 허용") null 일 수 없습니다 새 열을 추가,하지만 당신은 기본값을 제공하지 않았다, 그것은이 NULL이됩니다 .
그래서 SQL Server는 새 열을 만들 수 없습니다.

당신은 두 가지 일을 수행 할 수 있습니다

가) 허용 null로 새 열을 만듭니다.
update aspnet_Users set kjoptekvoten = 0)
을 ... 다음)

B "널 (null)을 허용"기본값으로 직접 새 열을 만들기 취소 :
는 기존의 모든 행에 기본 값을 넣습니다. 당신이 Management Studio에서이 작업을 수행 할 수있는 경우
는 나도 몰라,하지만 T-SQL에 쉽게 :

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

이것은 새로운 것이 아니다 널 (NULL) 컬럼을 추가하고 기본 값 제약 조건을 만들 것이며, 모든 기존 행의 기본값을 채우십시오 (SQL Server는 "with 값"절없이이 작업을 수행하지 않습니다).

2

일반적으로 그냥 설정을

은 허용하지 테이블 정의를 갱신 nulls.

관련 문제