мы можем даже писать так, создавая новый объект String в классе и назначая ему то, что когда-либо хотим в конструкторе, и возвращаем его в метод toString, который переопределен
public class Student{
int id;
String name;
String address;
String details;
Student(int id, String name, String address){
this.id=id;
this.name=name;
this.address=address;
this.details=id+" "+name+" "+address;
}
//overriding the toString() method
public String toString(){
return details;
}
public static void main(String args[]){
Student s1=new Student(100,"Joe","success");
Student s2=new Student(50,"Jeff","fail");
System.out.println(s1);//compiler writes here s1.toString()
System.out.println(s2);//compiler writes here s2.toString()
}
}
Необходимо установить значение по умолчанию.
ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL DEFAULT 'foo';
... some work (set real values as you want)...
ALTER TABLE mytable ALTER COLUMN mycolumn DROP DEFAULT;
Как другие заметили, необходимо или создать nullable столбец или обеспечить ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ. Если это не достаточно гибко (например, если Вам нужно новое значение, которое будет вычислено для каждой строки индивидуально так или иначе), можно использовать то, что в PostgreSQL, все команды DDL могут быть выполнены в транзакции:
BEGIN;
ALTER TABLE mytable ADD COLUMN mycolumn character varying(50);
UPDATE mytable SET mycolumn = timeofday(); -- Just a silly example
ALTER TABLE mytable ALTER COLUMN mycolumn SET NOT NULL;
COMMIT;
Или необходимо определить значение по умолчанию или сделать то, что говорит Sean, и добавьте его без пустого ограничения, пока Вы не заполнили его на существующих строках.
Так как строки уже существуют в таблице, ALTER
, оператор пытается вставить NULL
в недавно созданный столбец для всех существующих строк. Необходимо было бы добавить столбец как разрешение NULL
, затем заполнить столбец значениями, которые Вы хотите и затем устанавливаете его на NOT NULL
впоследствии.
Определение значения по умолчанию также работало бы, предполагая, что значение по умолчанию является соответствующим.
Или, составьте новую таблицу как временный файл с дополнительным столбцом, скопируйте данные в эту новую таблицу при управлении им по мере необходимости, чтобы заполнить не допускающий NULL-значения новый столбец и затем подкачать таблицу через двухступенчатую смену имени.
Да, это более сложно, но Вы, возможно, должны сделать это этот путь, если Вы не хотите большое ОБНОВЛЕНИЕ на живой таблице.