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

主キーの値を変更する

    ON UPDATE CASCADE を使用してそれを行う方法のサンプルを次に示します。 外部キー オプション。興味のある部分は、2 つの ALTER TABLE です。 ステートメント。

    IDENTITY を使用している場合 IDENTITY を更新できないため、主キーの列の場合、これはより困難になります。 桁。

    CREATE TABLE Parent
    (
        ParentId INT NOT NULL CONSTRAINT [PK_Parent] PRIMARY KEY CLUSTERED,
        Name VARCHAR(10) NOT NULL
    )
    
    CREATE TABLE Child 
    (
      ChildId INT NOT NULL CONSTRAINT [PK_Child] PRIMARY KEY CLUSTERED,
      ParentId INT NOT NULL CONSTRAINT [FK_Child_ParentId] FOREIGN KEY REFERENCES Parent (ParentId),
      Name VARCHAR(10) NOT NULL
    )
    
    INSERT INTO Parent (ParentId, Name) VALUES (1, 'Bob')
    INSERT INTO Parent (ParentId, Name) VALUES (2, 'Sue')
    
    INSERT INTO Child (ChildId, Name, ParentId) VALUES (1, 'Alice', 1)
    INSERT INTO Child (ChildId, Name, ParentId) VALUES (2, 'Billy', 2)
    
    SELECT * FROM Child 
    
    -- Drop foreign key constraint and re-add 
    ALTER TABLE Child 
      DROP CONSTRAINT [FK_Child_ParentId]
    
    ALTER TABLE Child
     ADD CONSTRAINT [FK_Child_ParentId] 
        FOREIGN KEY (ParentId) REFERENCES Parent (ParentId) ON UPDATE CASCADE 
    
    UPDATE Parent SET ParentId = ParentId + 100 
    
    SELECT * FROM Child --shows the new ParentIds 
    
    DROP TABLE Child 
    DROP TABLE Parent 
    


    1. ストアパスワードはphpセッション変数で大丈夫ですか?

    2. nodejsとexpressを使用してクエリパラメータからmysqlデータテーブルを更新する

    3. Sequelize.jsでサブクエリを実行することは可能ですか?

    4. データベーステーブルは、取得前または取得後にソートされていますか?