sql >> データベース >  >> RDS >> PostgreSQL

ルールを使用してセカンダリテーブルに自動インクリメントシーケンスを挿入する

    ルールを完全に忘れてください。彼らは悪い

    トリガーはあなたにとってはるかに優れています。そして、99%の場合、誰かがルールが必要だと思ったときです。これを試してください:

    create table users (
      userid serial primary key,
      username text
    );
    
    create table lastlogin (
      userid int primary key references users(userid),
      lastlogin_time timestamp with time zone
    );
    
    create or replace function lastlogin_create_id() returns trigger as $$
      begin
        insert into lastlogin (userid) values (NEW.userid);
        return NEW;
      end;
    $$
    language plpgsql volatile;
    
    create trigger lastlogin_create_id
      after insert on users for each row execute procedure lastlogin_create_id();
    

    次に:

    insert into users (username) values ('foo'),('bar');
    
    select * from users;
    
     userid | username 
    --------+----------
          1 | foo
          2 | bar
    (2 rows)
    
    select * from lastlogin;
    
     userid | lastlogin_time 
    --------+----------------
          1 | 
          2 | 
    (2 rows)
    



    1. MySQLで2つのクエリ結果が等しいかどうかを比較するにはどうすればよいですか?

    2. MYSQL Update権限は、権限も選択する必要がありますか?

    3. 主キーのデフォルトをNULLにすることはできますか?なぜそのように説明されているのですか?

    4. C#SQLパラメータを使用するようになりましたが、現在は機能しません