Можно скрыть реализацию интерфейса путем явного утверждения имени интерфейса перед именем метода:
public interface IInterface {
public void Method();
}
public class A : IInterface {
public void IInterface.Method() {
// Do something
}
}
public class Program {
public static void Main() {
A o = new A();
o.Method(); // Will not compile
((IInterface)o).Method(); // Will compile
}
}
В случае полей NULL вы можете что-то сделать например,
Select COALESCE(Name, '') from...
Функция coalesce возвращает первое ненулевое значение в списке.
Для действительно пустых полей (например, пустой nvarchar) я считаю, что ваш сценарий выше будет работать.
pg_dump -a -U user1 -t products -f products.copy database1
, а затем:
psql -U user2 -d database2 -f products.copy
и все готово. Это также безопаснее и быстрее.
Используйте новую функцию quote_nullable ()
в PostgreSQL 8.4. Помимо разрешения значений NULL, он сохраняет ваши типы данных и защищает вас от таблиц Бобби (SQL-инъекции):
SELECT 'INSERT INTO products (id,name,description) VALUES (' ||
quote_nullable(ID) || ',' || quote_nullable(name) || ',' ||
quote_nullable(description) || ');' FROM products;
В более старых версиях вы получаете такое же поведение с coalesce ()
и quote_literal ()
:
SELECT 'INSERT INTO products (id,name,description) VALUES (' ||
coalesce(quote_literal(ID), 'null') || ',' ||
coalesce(quote_literal(name), 'null') || ',' ||
coalesce(quote_literal(description), 'null') || ',' ||
');' FROM products;