如果我希望简单地使用SQL在SQL数据库中重命名列(不改变其类型或约束,只是其名称),我该怎么做?还是不可能?
这适用于任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,无论实际的数据库实现如何都可以使用.
如何在sqlite中更改列?这是在Postgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Run Code Online (Sandbox Code Playgroud)
我相信在sqlite中根本没有ALTER COLUMN,只支持ALTER TABLE.
任何的想法?谢谢!
如何在sqlite3中更改表中现有列的默认值?
我有一个名为notesboolean列的表hidden.默认设置为true,我想将其设置为false.
在SQLite FAQ [1]中,提到SQLite没有完整的ALTER TABLE支持.在上一个关于StackOverflow [2]的问题中,提到了一种技巧来完成表修改.
我想知道的是如何保留FOREIGN KEY引用,因为它们被移动到随后被删除的重命名表中.我应该对每个与我正在修改的实际表具有外键关系的表执行相同的操作吗?
如果我在创建索引后重命名SQLite Tables/Columns/Rows,旧索引是否仍然可用?
谢谢!
我的应用崩溃了,因为我没有正确处理迁移。我正在寻找一种迁移表中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) 我试图从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列添加到数据库.
那我为什么不能这样做呢?我的查询有问题吗?
假设我想运行以下 SQLite 命令来删除特定表中 Name 列为 NULL 的所有行:
DELETE FROM myTable WHERE Name IS NULL;
Run Code Online (Sandbox Code Playgroud)
现在假设我有 20 个表,它们没有以任何模式命名。我想从数据库中的每个表中删除 Name 列为 NULL 的所有行。有没有我可以一次使用的语句?或者我是否必须运行一个语句来获取表名,然后获取输出并使用每个表名运行 20 个左右的命令?
我正在使用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 ×7
sql ×3
database ×2
foreign-keys ×2
alter-table ×1
android ×1
android-room ×1
c# ×1
format ×1
rename ×1
sql-server ×1