таблицы - добавить столбец в таблицу sql oracle




Добавьте столбец в таблицу со значением по умолчанию, равным значению существующего столбца (4)

Подход триггера AFTER INSERT включает в себя накладные расходы из-за дополнительного оператора UPDATE . Я предлагаю использовать триггер INSTEAD OF INSERT следующим образом:

CREATE TRIGGER tablename_on_insert ON tablename 
INSTEAD OF INSERT 
AS
INSERT INTO tablename (oldcolumn, newcolumn)
SELECT oldcolumn, ISNULL(newcolumn, oldcolumn)
FROM inserted

Это не работает, если oldcolumn является oldcolumn .

Как добавить столбец в таблицу SQL Server со значением по умолчанию, равным значению существующего столбца?

Я пробовал эту инструкцию T-SQL:

ALTER TABLE tablename 
ADD newcolumn type NOT NULL DEFAULT (oldcolumn) 

но он дает ошибку:

В этом контексте имя «oldcolumn» не разрешено. Допустимыми выражениями являются константы, константные выражения и (в некоторых контекстах) переменные. Имена столбцов запрещены.


Попробуй это:

ALTER TABLE tablename ADD newcolumn type NOT NULL DEFAULT (0)
Go
Update tablename SET newcolumn = oldcolumn Where newcolumn = 0
Go

Я думаю, что это сработает, если вы используете Set Identity_Insert <TableName> OFF и после того, как вы Set Identity_Insert <TableName> ON просто используйте Set Identity_Insert <TableName> ON .


Я не очень люблю их, но вот как вы могли бы сделать это с помощью триггера AFTER INSERT :

CREATE TRIGGER TableX_AfterInsert_TRG 
  ON TableX 
AFTER INSERT
AS
  UPDATE TableX AS t
  SET t.newcolumn = t.oldcolumn
  FROM Inserted AS i
  WHERE t.PK = i.PK ;              -- where PK is the PRIMARY KEY of the table   




sql-server-2008