-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add database table page; fix broken link (#107)
* Add database table page; fix broken link * add spell check errors to custom_wordlist * add rename-database-table to how-to/index.rst * fix reference link to rename-database-table page in live-patching.rst explanation doc * format rename-database-table to show as sql code --------- Co-authored-by: Jared Nielsen <[email protected]> Co-authored-by: Alvaro Crespo <[email protected]>
- Loading branch information
1 parent
5b319ab
commit c690ef5
Showing
5 changed files
with
72 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
========================= | ||
Renaming a Database Table | ||
========================= | ||
|
||
Renaming a table involves a few steps: | ||
|
||
1. Rename the table | ||
2. Rename dependent objects, like constraints, indexes, and sequences. | ||
3. Create a writable view using the old name so deployed code keeps working. | ||
|
||
For example: | ||
|
||
.. code-block:: sql | ||
-- Copyright 2011 Canonical Ltd. | ||
-- This software is licensed under the GNU Affero General Public License version 3 (see the file LICENSE). | ||
SET client_min_messages=ERROR; | ||
-- Rename the table | ||
ALTER TABLE IrcId RENAME TO IrcNickname; | ||
-- And rename sequences, constraints, and indexes to match. | ||
ALTER SEQUENCE ircid_id_seq RENAME TO ircnickname_id_seq; | ||
ALTER TABLE IrcNickname | ||
-- With Slony 1.2.22, renaming the primary key fails. Leave these | ||
-- with the old names for now. | ||
-- DROP CONSTRAINT ircid_pkey, | ||
-- ADD CONSTRAINT ircnickname_pkey PRIMARY KEY (id), | ||
DROP CONSTRAINT ircid_person_fk, | ||
ADD CONSTRAINT ircnickname_person_fk | ||
FOREIGN KEY (person) REFERENCES Person; | ||
ALTER INDEX ircid_person_idx RENAME TO ircnickname_person_idx; | ||
-- Create a view with the old table name for backwards compatibility. | ||
CREATE OR REPLACE VIEW IrcId AS SELECT * FROM IrcNickname; | ||
-- Make the backwards compatibility view updatable. | ||
CREATE OR REPLACE RULE IrcId_ins AS ON INSERT TO IrcId DO INSTEAD | ||
INSERT INTO IrcNickname VALUES ( | ||
COALESCE(NEW.id, nextval('ircnickname_id_seq')), | ||
NEW.person, | ||
NEW.network, | ||
NEW.nickname) | ||
RETURNING IrcNickname.*; | ||
CREATE OR REPLACE RULE IrcId_upd AS ON UPDATE TO IrcId DO INSTEAD | ||
UPDATE IrcNickname SET | ||
id = NEW.id, | ||
person = NEW.person, | ||
network = NEW.network, | ||
nickname = NEW.nickname | ||
WHERE id = OLD.id | ||
RETURNING IrcNickname.*; | ||
CREATE OR REPLACE RULE IrcId_del AS ON DELETE TO IrcId DO INSTEAD | ||
DELETE FROM IrcNickname WHERE id = OLD.id | ||
RETURNING IrcNickname.*; | ||
INSERT INTO LaunchpadDatabaseRevision VALUES (2208, 85, 0); |