0

ユーザーとアカウントの2つのテーブルがあります。ユーザーが作成されたときに自動的にアカウントを作成するトリガーが必要です。これが私のコードです:

alter trigger Add_user on [user] for insert as
begin
    insert into [account] (name) values ('Main')

    declare @newAccountId int, @insertedId int
    set @newAccountId = (select scope_identity())
    set @insertedId = (select id from inserted)

    update [user]
    set accountId = @newAccountId
    where id = @insertedId
end

User テーブルの AccountId を null にしないようにしたいのですが、新しいユーザーを作成しようとすると、許可されず、null でない AccountId 列について不平を言うエラーが発生します:(

4

1 に答える 1

2

[user].AccountId を null 可能にすると、機能するはずです。

また、次のことも考慮してください。

  • [アカウント] テーブルには列「名前」のみが含まれていますか? つまり、すべてのユーザーにとってグローバルですか?では、なぜ各ユーザーに新しいアカウントを作成するのでしょうか? ユーザー固有の場合は、[account].[userId] 列を追加します。
  • トリガーの代わりにストアド プロシージャを作成することをお勧めします (最初にアカウント レコードを作成してからユーザー レコードを作成します)。これはより明示的で安全です。トリガーには注意してください。他の開発者にとっては、ユーザーを挿入するとアカウントも作成されることに驚かれる可能性があります。
于 2012-07-31T01:52:23.457 に答える