[英]How to set all table columns to NOT NULL at once?
這甚至可能嗎,如果可以的話怎么辦? 如果不是,那么我會對一種不需要逐個鍵入每個列名的方式感到滿意。 我的用例是我從查詢創建一個表,並希望所有列都不是 NULL 因為我后來使用 Slick 做 ORM 並且所有這些列類型不是 Z37A6259CC46[X9DFFAE299A ])。 這是 static 數據,因此列值不會是 null 也不會改變。
與 MySQL 不同,Postgres 並沒有發現原始查詢列都不是 NULL。
我想避免在我的腳本中一一添加約束,並且每當更改查詢架構時都容易破壞解決方案,即
CREATE TABLE dentistry_procedure AS SELECT * FROM ...
ALTER TABLE dentistry_procedure ALTER column * SET NOT NULL;
如何?
您可以使用元數據表並構建動態查詢:
SELECT format('ALTER TABLE %I '||STRING_AGG(format('ALTER COLUMN %I SET NOT NULL', COLUMN_NAME),CHR(13)||',')
, MIN(TABLE_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE IS_NULLABLE = 'YES'
AND TABLE_NAME = 't';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.