3
A
回答
3
可以附加列一個表上添加一個ALTER TABLE
ALTER TABLE table_name
ADD(new_column_name NUMBER UNIQUE);
您可以創建一個新的序列,然後創建填充使用序列
CREATE SEQUENCE sequence_name;
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
:new.new_column_name := sequence_name.nextval;
END;
如果新列的觸發器您正在使用11g之前的Oracle版本,您的觸發器需要從DUAL
執行SELECT
以便填充:new.new_column_name
列,而不是直接分配
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
SELECT sequence_name.nextval
INTO :new.new_column_name
FROM dual;
END;
想必,你也會希望使用序列值初始化所有現有行你開始插入新行
UPDATE table_name
SET new_column_name = sequence_name.nextval
WHERE new_column_name IS NULL
之前,但它似乎很奇怪,添加一個新生成的序列列複製到具有複合主鍵的現有表,除非目標是將該新列用作主鍵。生成序列生成列的重點在於,您擁有一個穩定的合成主鍵,它不依賴於實際的業務數據。因此,放棄現有主鍵,添加新列,填充數據,將新列聲明爲新主鍵,然後在包含舊主鍵的三列上定義唯一約束似乎更有意義鍵。
相關問題
- 1. 添加唯一約束列
- 2. Postgres添加唯一約束
- 3. 如何在現有FK的父項上添加唯一約束?
- 4. Alembic:如何添加唯一約束到現有的列
- 5. TYPO3 Extbase - 添加唯一約束的正確方法?
- 6. oracle db中的條件唯一約束
- 7. 修改現有的唯一約束
- 8. 有沒有更好的方法在Django模型中添加一個對值敏感的唯一一起約束?
- 9. MySQL爲來自多個表的列添加唯一約束?
- 10. 添加唯一約束,而忽略現有
- 11. 將現有約束添加到新表
- 12. SQL - 添加唯一約束失敗
- 13. 如何爲2個可爲空的列添加唯一約束?
- 14. 我可以爲分區添加一個唯一的約束嗎?
- 15. 由於外鍵約束,無法刪除現有的唯一鍵
- 16. 唯一約束
- 17. liquibase - 如何改變表使現有的約束唯一?
- 18. 具有唯一約束
- 19. 唯一約束在NON-NULL列上的唯一約束
- 20. CakePHP加入模型的唯一約束
- 21. PostgreSQL的:有條件的唯一約束
- 22. 在Ruby on Rails(MySQL)中爲現有表添加外鍵約束
- 23. SQL跨多個表的唯一約束
- 24. PostgreSQL的唯一約束不夠唯一
- 25. SQLite中的唯一約束
- 26. 表列上的唯一約束條件
- 27. oracle唯一約束
- 28. 定義表的唯一鍵約束
- 29. alter sqlite表在多列上添加唯一約束
- 30. 在複製表上添加/修改唯一約束條件
是否在主鍵或表中添加一個唯一列? – DCookie
在該列上添加一個列和唯一約束。因爲我不能在另一個表上創建一個外鍵約束到第一個表,因爲它的主鍵由它所具有的三個列組成。所以我想創建一個獨特的列,所以我可以從另一個表中引用它。 – rapadura