söndag 23 januari 2011

Användarregistrering externt

Jag har sett över strukturen på sidan med användarregistreringen. Det som gäller att läsa cookie och ta reda på var sidan exekveras är lagda i subrutiner. Ev kan de sedan flyttas över till MasterPage.master.

Nu är uppgiften att anpassa den externa databasen till de ändringar jag gjort lokalt. Det går bra att lägga till nya fält (eller kolumner som de säger på SQL-språk) i tabellen Account men det är inte möjligt med SQL Server Management (SSM) ange att det nya fältet inte får vara tomt. Dumt!

Lösningen är nog att göra en Query som ändrar fältets egenskaper. Enligt MSDNs sida om detta verkar det som om frågan "ALTER TABLE Account ALTER COLUMN UserName NOT NULL" skulle lösa uppgiften. Men nej, det är syntaxfel. Testar det snarlika kommandot "ALTER TABLE Account ALTER COLUMN UserName NVARCHAR(20)". Och det funkar!

The Firebird FAQ säger att det helt enkelt inte är möjligt att ändra NULL-egenskapen hos en kolumn. Lösningen blir att skapa ett nytt fält och ta bort det gamla. Illa om tabellen inte är tom. Men att lägga in en ny kolumn med kommandot "ALTER TABLE Account add UserName2 nvarchar(50) NOT NULL;" funkar inte. Systemet säger: "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 'UserName2' cannot be added to non-empty table 'Account' because it does not satisfy these conditions."

Men så prövar jag igen "ALTER TABLE Account ALTER Column UserName nvarchar(50) not null" och det fungerar. Snurrigt.

Fast kanske inte ändå. Först skapas fältet med "ALTER TABLE dbo.Account ADD GUID nvarchar(50)", Därefter läggs något värde i det nya fältet. Och sedan kan NOT NULL läggas till med "ALTER TABLE Account ALTER Column GUID nvarchar(50) not null".

Nu fungerar det att registrera sig som användare men det är också allt. Nästa steg blir att få Login att funka.

Inga kommentarer:

Skicka en kommentar