问题很简单.如何将x
列添加到表y
中,但仅当x
列不存在时?我找到了唯一的解决方案here如何判断列是否存在.
SELECT column_name
FROM information_schema.columns
WHERE table_name='x' and column_name='y';
问题很简单.如何将x
列添加到表y
中,但仅当x
列不存在时?我找到了唯一的解决方案here如何判断列是否存在.
SELECT column_name
FROM information_schema.columns
WHERE table_name='x' and column_name='y';
下面是一个简短而甜蜜的版本,使用"DO"语句:
DO $$
BEGIN
BEGIN
ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
EXCEPTION
WHEN duplicate_column THEN RAISE NOTICE 'column <column_name> already exists in <table_name>.';
END;
END;
$$
您不能将这些作为参数传递,您需要在客户端的字符串中进行变量替换,但这是一个自包含的查询,仅当列已经存在时才会发出消息,如果不存在则会添加消息,并且在出现其他错误(如无效数据类型)时会继续失败.
如果这些是来自外部源的随机字符串,我不建议使用这些方法中的任何一种.无论您使用什么方法(作为查询执行的客户端或服务器端动态字符串),它都会导致灾难,因为它会让您面临SQL注入攻击.