בדף הזה מוסבר איך לשנות את השם של טבלאות, ואיך להוסיף, להשתמש ולמחוק מילים נרדפות של טבלאות במסדי נתונים של GoogleSQL ובמסדי נתונים של PostgreSQL.
אפשרויות לשינוי שם של טבלה ולמילים נרדפות
אפשר להשתמש בהצהרה ALTER TABLE כדי:
- שינוי שם של טבלה והוספת השם הישן למילה נרדפת.
- החלפה בין שמות של טבלאות.
- שינוי שם של טבלה אחת.
- יוצרים טבלה חדשה עם מילה נרדפת אחת.
- הוספת מילה נרדפת אחת לטבלה בלי לשנות את השם שלה
איך עובד שינוי השם של טבלה באמצעות מילים נרדפות
תרחיש נפוץ הוא שינוי שם של טבלה והוספת מילה נרדפת שמכילה את השם הישן של הטבלה. אחרי שמשנים את השם של הטבלה, אפשר לעדכן את האפליקציות כדי להשתמש בשם החדש לפי לוח הזמנים שלכם. במהלך התקופה הזו, יכול להיות שחלק מהאפליקציות ישתמשו בשם הישן וחלקן בשם החדש.
אחרי שתעדכנו את כל האפליקציות כך שישתמשו בשם החדש, מומלץ להסיר את המילה הנרדפת. לשימוש במילה נרדפת אין השפעה על הביצועים, אבל אי אפשר להשתמש בשם הישן במקום אחר עד שהמילה הנרדפת תוסר.
מילים נרדפות מאוחסנות בסכימה כאובייקט synonym. אפשר להגדיר רק מילה נרדפת אחת בטבלה.
מידע נוסף זמין במאמר בנושא שינוי שם של טבלה והוספת מילה נרדפת.
איך עובד החלפת שמות של טבלאות
כשצריך להחליף שמות בין שתי טבלאות, אפשר לשרשר הצהרות RENAME TO כדי לשנות את השם של שתי טבלאות באותה הצהרה. כך תוכלו לקשר אפליקציות לטבלה אחרת בלי הפרעות.
מידע נוסף זמין במאמר החלפת שמות של טבלאות.
איך משנים את השם של טבלה
כשמשנים את השם של טבלה, Spanner משנה את שם הטבלה בסכימה של הטבלה. כשמשנים את השם של טבלה, כל הטבלאות המשניות משולבות בשם החדש של הטבלה. שינוי השם של הטבלה משנה גם את ההפניות לטבלה במקרים הבאים:
- אינדקסים
- מפתחות זרים
- סנכרון שינויים בזרמי נתונים
- בקרת גישה פרטנית (FGAC)
מערכת Spanner לא מעדכנת אוטומטית את התצוגות כדי להשתמש בשם הטבלה החדש.
מידע נוסף זמין במאמר בנושא שינוי שם של טבלה.
מגבלות על שינוי שם הטבלה
יש מגבלות על שינוי השם של טבלה:
- אי אפשר לשנות את השם של טבלה לשם של עמודה בטבלה הזו אם הטבלה משולבת בטבלה אחרת.
- אי אפשר לשנות את השם של האינדקסים. כדי לשנות את השם של אינדקס, צריך להסיר אותו וליצור אותו מחדש עם שם חדש.
- אם לטבלה יש תצוגה, כדאי להסיר את התצוגה וליצור אותה מחדש אחרי שינוי השם של הטבלה.
איך פועלים מילים נרדפות
אפשר ליצור טבלה חדשה עם מילה נרדפת או לשנות טבלה כדי להוסיף לה מילה נרדפת בלי לשנות את השם של הטבלה. לדוגמה, אם רוצים להשתמש במסד נתונים גם בסביבת ייצור וגם בסביבת בדיקה.
מידע נוסף זמין במאמר הוספת מילה נרדפת לטבלה.
הרשאות
כדי לשנות את השם של טבלה או להוסיף לטבלה מילה נרדפת, אתם צריכים את ההרשאה spanner.databases.updateDdl. כדי לבדוק או לערוך את ההרשאות, אפשר לעיין במאמר בנושא הענקת הרשאות לישויות.
שינוי שם של טבלה והוספת מילה נרדפת
GoogleSQL
משתמשים בפקודה ALTER TABLE RENAME TO ADD SYNONYM כדי לשנות את השם של טבלה ולהוסיף מילה נרדפת.
ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;
PostgreSQL
משתמשים בפקודה ALTER TABLE RENAME WITH ADD SYNONYM כדי לשנות את השם של טבלה ולהוסיף מילה נרדפת.
ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;
בדוגמה הבאה אפשר לראות איך משנים את השם של טבלה ומוסיפים מילה נרדפת. לדוגמה, אם יוצרים טבלה עם ה-DDL הבא:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id));
אפשר לשלוח את בקשת ה-DDL הבאה כדי לשנות את שם הטבלה ולהעביר את השם הקיים לאובייקט synonym.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
החלפת שמות של טבלאות
הצהרת ה-DDL הבאה משנה את השמות של כמה טבלאות באופן אטומי. האפשרות הזו שימושית כשמחליפים את השמות בין זוגות של טבלאות.
GoogleSQL
שימוש ב-RENAME TABLE.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
שימוש ב-ALTER TABLE RENAME TO.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name1
RENAME TO new_table_name1
[, ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name2
RENAME TO new_table_name2 ...];
בדוגמה הבאה אפשר לראות איך מחליפים את השמות של שתי טבלאות. לשם כך צריך לשנות את השם של הטבלה הראשונה לשם זמני, לשנות את השם של הטבלה השנייה לשם של הטבלה הראשונה, ואז לשנות את השם של הטבלה הראשונה לשם של הטבלה השנייה.
אם יצרתם שתי טבלאות כמו בדוגמה הבאה:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
CREATE TABLE SingersNew (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
MiddleName STRING(1024),
LastName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id)
);
CREATE TABLE singers_new (
singer_id BIGINT,
first_name VARCHAR(1024),
middle_name VARCHAR(1024),
last_name VARCHAR(1024)
PRIMARY KEY (singer_id)
);
כדי להחליף את שמות הטבלאות, אפשר להשתמש בבקשת ה-DDL הבאה:
GoogleSQL
RENAME TABLE Singers TO Temp, SingersNew TO Singers, Temp TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO temp,
ALTER TABLE singers_new RENAME TO singers,
ALTER TABLE temp RENAME TO singers_new;
אחרי שמחילים את הצהרת ה-DDL, שמות הטבלאות מתחלפים, כמו שמוצג בדוגמה הבאה:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
MiddleName STRING(1024),
LastName STRING(1024)
), PRIMARY KEY (SingerId);
CREATE TABLE SingersNew (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
first_name VARCHAR(1024),
middle_name VARCHAR(1024),
last_name VARCHAR(1024)
PRIMARY KEY (singer_id)
);
CREATE TABLE singers_new (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id)
);
שינוי שם של טבלה
כדי לשנות את השם של טבלה, משתמשים בתחביר הבא:
GoogleSQL
אפשר להשתמש בהצהרה ALTER NAME או בהצהרה RENAME TABLE.
ALTER TABLE table_name RENAME TO new_table_name;
RENAME TABLE table_name TO new_table_name;
PostgreSQL
משתמשים בהצהרה ALTER TABLE RENAME TO.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
הדוגמה הבאה מציגה בקשת DDL שמשנה את השם של הטבלה:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
הוספת מילה נרדפת לטבלה
כדי להוסיף מילה נרדפת לטבלה:
GoogleSQL
ALTER TABLE table_name ADD SYNONYM synonym;
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;
בדוגמה הבאה מוצגת בקשת DDL שמוסיפה מילה נרדפת לטבלה:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
יצירת טבלה עם מילה נרדפת
כדי ליצור טבלה עם מילה נרדפת:
GoogleSQL
שימוש ב-CREATE TABLE SYNONYM synonym_name.
CREATE TABLE table_name (
...
SYNONYM (synonym)
) PRIMARY KEY (primary_key);
PostgreSQL
שימוש ב-CREATE TABLE SYNONYM synonym_name.
CREATE TABLE table_name (
...
SYNONYM (synonym),
PRIMARY KEY (primary_key));
בדוגמה הבאה נוצרת טבלה ומוסף לה מילה נרדפת.
GoogleSQL
# The table's name is Singers and the synonym is Artists.
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024),
SYNONYM (Artists)
) PRIMARY KEY (SingerId);
PostgreSQL
# The table's name is singers and the synonym is artists.
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
SYNONYM (artists),
PRIMARY KEY (singer_id));
הסרת מילה נרדפת מטבלה
GoogleSQL
משתמשים בפקודה ALTER TABLE DROP SYNONYM כדי להסיר את המילה הנרדפת מהטבלה.
ALTER TABLE table_name DROP SYNONYM synonym;
PostgreSQL
משתמשים בפקודה ALTER TABLE DROP SYNONYM כדי להסיר את המילה הנרדפת מהטבלה.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;
בדוגמה הבאה מוצגת בקשת DDL שמסירה את המילה הנרדפת מהטבלה:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;