相关疑难解决方法(0)

如何使用SQL重命名数据库表中的列?

如果我希望简单地使用SQL在SQL数据库中重命名列(不改变其类型或约束,只是其名称),我该怎么做?还是不可能?

这适用于任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,无论实际的数据库实现如何都可以使用.

sql database sql-server rename

109
推荐指数
8
解决办法
47万
查看次数

在sqlite中的ALTER COLUMN

如何在sqlite中更改列?这是在Postgresql

ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Run Code Online (Sandbox Code Playgroud)

我相信在sqlite中根本没有ALTER COLUMN,只支持ALTER TABLE.

任何的想法?谢谢!

sqlite

73
推荐指数
4
解决办法
10万
查看次数

sqlite3更改列的默认值

如何在sqlite3中更改表中现有列的默认值?

我有一个名为notesboolean列的表hidden.默认设置为true,我想将其设置为false.

sqlite

13
推荐指数
1
解决办法
1万
查看次数

在执行SQLite alter table技巧时更新外键引用

在SQLite FAQ [1]中,提到SQLite没有完整的ALTER TABLE支持.在上一个关于StackOverflow [2]的问题中,提到了一种技巧来完成表修改.

我想知道的是如何保留FOREIGN KEY引用,因为它们被移动到随后被删除的重命名表中.我应该对每个与我正在修改的实际表具有外键关系的表执行相同的操作吗?

[1] http://www.sqlite.org/lang_altertable.html

[2] 如何重命名SQLite数据库表中的列?

sqlite foreign-keys alter-table

7
推荐指数
1
解决办法
3912
查看次数

创建索引后重命名SQLite表/列/行

如果我在创建索引后重命名SQLite Tables/Columns/Rows,旧索引是否仍然可用?

谢谢!

sql database sqlite format database-design

5
推荐指数
1
解决办法
856
查看次数

Android Room:如何迁移列重命名?

问题

我的应用崩溃了,因为我没有正确处理迁移。我正在寻找一种迁移表中1列名称的解决方案。

在我的项目中,我有一个名为“ content ” 的房间表,其双人间属性为“ archivedCount ”。在该应用程序的最新版本中,属性archivedCount属性重命名为dismissCount,仍为Double类型

原始内容模型

@Entity(tableName = "content")
data class Content(@PrimaryKey var id: String, var archiveCount: Double) : Parcelable {...}
Run Code Online (Sandbox Code Playgroud)

新内容模型

@Entity(tableName = "content")
data class Content(@PrimaryKey var id: String, var dismissCount: Double) : Parcelable {...}
Run Code Online (Sandbox Code Playgroud)

尝试的解决方案

阅读了Google Developer Advocate的解释《用Room进行迁移》后,我尝试了在文章的“ 使用复杂的模式进行迁移 ”一节中概述的解决方案,该过程包括复制原始表,删除旧表,然后重命名新创建的表。

使用下面的以下方法,在此行上会出现运行时错误:database.execSQL("INSERT INTO content_new (id, dismissCount) SELECT id, archiveCount FROM users");因为我已经清除了应用程序的缓存,所以旧表不再存在。

是否可以在不重新创建整个表的情况下更新单个列?

static final Migration MIGRATION_1_2 = new Migration(1, 2) { …
Run Code Online (Sandbox Code Playgroud)

sql android android-sqlite android-room

5
推荐指数
2
解决办法
2424
查看次数

在不指定默认值的情况下创建"NOT NULL"SQLite列

我试图从C#WinForms应用程序中创建一个SQLite数据库.我正在使用sqlite.org上System.Data.SQLite

我可以很好地创建数据库,我也可以创建表格.当我需要添加一个我不想允许空值的新列时,问题出现了,但我也不想指定默认值.

为了创建表,我将使用如下的查询:

CREATE TABLE MyTable (ID INTEGER PRIMARY KEY AUTOINCREMENT)
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,会发生此问题:

ALTER TABLE MyTable ADD COLUMN Col1 nvarchar NOT NULL
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

SQL逻辑错误或缺少数据库无法添加具有默认值NULL的NOT NULL列

我理解为什么这可能是一个问题,如果表包含数据,但所有表都是空的(它们刚刚创建).

我还可以使用单独的工具(SQLiteStudio)手动将没有默认值的NOT NULL列添加到数据库.

那我为什么不能这样做呢?我的查询有问题吗?

c# sqlite

4
推荐指数
1
解决办法
3596
查看次数

如何将 SQLite 命令应用于所有表

假设我想运行以下 SQLite 命令来删除特定表中 Name 列为 NULL 的所有行:

DELETE FROM myTable WHERE Name IS NULL;
Run Code Online (Sandbox Code Playgroud)

现在假设我有 20 个表,它们没有以任何模式命名。我想从数据库中的每个表中删除 Name 列为 NULL 的所有行。有没有我可以一次使用的语句?或者我是否必须运行一个语句来获取表名,然后获取输出并使用每个表名运行 20 个左右的命令?

sqlite

3
推荐指数
1
解决办法
2520
查看次数

重命名Users表中的列时,获取:SQLite3 :: ConstraintException:FOREIGN KEY约束失败:DROP TABLE“ users”

我正在使用Sqlite开发Rails应用程序,并且有一个与其他几个表关联的用户表。尝试在Users中重命名列时,运行rails db:migrate时出现主题错误。

我在这里看到很多类似问题的帖子,但没有一个奏效。具体来说,常见的补救方法似乎是在所有has_many和has_one关联上使用“ dependent::destroy”。我正在这样做,但是仍然出现错误。

我究竟做错了什么?

下面是我的代码:

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
  :recoverable, :rememberable, :trackable, :validatable

  has_one :profile, dependent: :destroy
  has_many :bikes, dependent: :destroy
  has_many :bookings, dependent: :destroy
  has_many :rented_bikes, through: :bookings, source: :bike
  has_many :conversations, dependent: :destroy
  has_many :likes, dependent: :destroy
  has_many :liked_bikes, through: :likes, :source => :bike
  has_many :viewed_bikes, through: :views, :source => :bike
  has_many :views, dependent: :destroy
  has_many :reviews, dependent: :destroy
end

class Profile < ApplicationRecord
  belongs_to :user
end

class Bike < ApplicationRecord
  belongs_to :user
  has_many …
Run Code Online (Sandbox Code Playgroud)

sqlite ruby-on-rails foreign-keys

1
推荐指数
1
解决办法
283
查看次数